0

我有一个<asp:Button name="theButton">使用 jQuery 处理点击的方法。按下按钮时,我会显示一个自定义 jQuery UI 确认对话框。

我已经进行了 2 次回调;一个用于“是”-单击,一个用于“否”:

$('input[name="theButton"]').click(function(){

    myPopUpMethod(function(){

        //user pressed "yes" - perform postback 
        //(return true won't do anything here)

    }, function(){

        //user pressed "no" - don't postback

    });

});

如果我使用标准confirm(),我可以执行以下操作:

return confirm('are you sure?');

但是在我的第一个示例中,如何将 true 或 false 返回到“外部单击功能”?

4

1 回答 1

1

因为 jQuery 对话框不会阻塞线程,所以你的 click 函数总是会立即返回,所以你需要 return false; 最后,无论对话结果如何,都不会发布表单。

我通常做的是检查按钮上是否存在数据属性,如果存在将允许表单提交,例如:

$('input[name="theButton"]').click(function(){
    var $btn = $(this); 
    if($btn.data("dosubmit") == "true")) {
       return true;
    }
    myPopUpMethod(function(){
       $btn.data("dosubmit", "true").trigger("click");
    }, function(){
        // Do Nothing
    });
   return false;
});

第一次调用时,会弹出 jQuery UI 对话框,并且该方法将阻止表单提交。一旦用户在对话框上单击“是”,将设置 data-dosubmit 属性并再次触发按钮单击。在这个阶段,该方法看到 data-dosubmit 属性并尝试提交表单。

于 2013-05-24T11:55:09.677 回答