为什么这个代码不会执行?

时间:2012-05-31 12:48:03

标签: jquery

这样的运行非常好。

// Save, set state to finalized and Print
        $('#btnDialogPrint').click(function () {

            if ($('#chkFinal').is(':checked')) {
                $(function () {
                    $("#PrintDialog").dialog('close');    
                });
            }
            else {
                $('#chkFinal').attr('checked', true); // Set finalized. This checkbox is not visible its like a hidden field
                $('#btnSubmit').click(); // Save
            }

        });

这也运行良好:

window.location = '../Print/' + $('#SalesContractId').val();

但是当我把它们放在一起时它只运行

  

window.location ='../Print/'+ $('#SalesContractId')。val();

完整代码:

// Save, set state to finalized and Print
    $('#btnDialogPrint').click(function () {

        if ($('#chkFinal').is(':checked')) {

            $(function () {
                $("#PrintDialog").dialog('close');
                window.location = '../Print/' + $('#SalesContractId').val();    // Moves to ContractController Print
            });
        }
        else {
            $('#chkFinal').attr('checked', true); // Set finalized. This checkbox is not visible its like a hidden field
            $('#btnSubmit').click(); // Save
             window.location = '../Print/' + $('#SalesContractId').val();    // does not alow above code to execute 
        }

    });

1 个答案:

答案 0 :(得分:4)

移除点击处理程序中的$(function() { ... });并将其设置为 ouside

$(function() {
    $('#btnDialogPrint').click(function () {
        if ($('#chkFinal').is(':checked')) {
            $("#PrintDialog").dialog('close');
            window.location.href = '../Print/' + $('#SalesContractId').val();
        } else {
            $('#chkFinal').attr('checked', true);                
            $('#btnSubmit').click();
        }
    });
});

$(function() { ... });表示document.ready

据说你似乎在呼唤一些$('#btnSubmit').click();。请注意,如果此#btnSubmit实际上是某个表单的提交按钮(正如其ID所示),那么在提交表单时,它会自动将浏览器重定向到表单的action属性。因此,在这种情况下调用window.location.href重定向是完全没有意义的。我想你将不得不重新思考你想要达到的目标。