返回值以单击回调

时间:2013-05-24 11:50:09

标签: javascript jquery asp.net webforms

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

我做了两次回调;一个用于“是” - 单击,一个用于“否”:

$('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”返回到“外部点击功能”?

1 个答案:

答案 0 :(得分:1)

因为jQuery对话框没有阻塞线程,所以你的click函数总是会立即返回,所以你需要返回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属性并尝试提交表单。