7

我敢肯定,这里已经问过很多次了。我最近看到的是 2012 年12 月。但我想问一下是否有人对此问题有修复/更好的解决方法

我正在使用jQueryUI Dialog,我想问是否可以在弹出对话框并且用户尚未选择答案时停止脚本执行。就像 javascriptconfirm()一样。

这是我到目前为止所拥有的:

jQuery

$("#GlobalDialogBox").dialog({
        modal: true,
        buttons: {
        "Yes": function () { 
            callbackFunctionTrue();
            $(this).dialog('close'); 
         },
        "No": function () { 
            callbackFunctionFalse();
            $(this).dialog('close'); 
         }
      }
    });

   alert("This should fire after answering the dialog box."); //but this fires as soon as the dialog pops up.. :(

alert是脚本的常见部分,无论答案如何,都会在回答对话框后触发。在我的修复中,我只是插入了alertcallbackFunctionTrue()并且callbackFunctionFlase()它完成了工作。

但是如果我不想这样做呢?当对话框弹出时我将如何停止脚本,以便我可以在dialog脚本下方自由添加我的代码?有人有更好的解决方案吗?任何帮助,将不胜感激!提前致谢!:]

4

5 回答 5

3

当对话框被关闭时,它会触发关闭事件。您可以通过在对话框中添加事件侦听器来做到这一点:

$("#GlobalDialogBox").on( "dialogclose", function( event, ui ) {
      alert("something");
});

或更一致的方式:

$("#GlobalDialogBox").dialog({
    modal: true,
    buttons: {
        "Yes": function () { 
            callbackFunctionTrue();
            $(this).dialog('close'); 
         },
        "No": function () { 
            callbackFunctionFalse();
            $(this).dialog('close'); 
         }
    },
    close: function(event, ui){
       alert("something");
    }
});
于 2013-06-13T02:13:22.907 回答
1

您不能真正任意暂停脚本执行。在这种情况下,回调函数是您最好的解决方案,因此在对话框上的按钮选项下方添加一个关闭事件处理程序,并将您的警报和您想要在对话框关闭后执行的任何其他代码放在那里。

于 2013-06-13T02:17:24.703 回答
1
function dialog_confirm(){
  $( "#dialog-confirm" ).dialog({
    //autoOpen: false,
    resizable: false,
    height:140,
    modal: true,
    buttons: {
      "Delete all items": function() {
        $( this ).dialog( "close" );
        dialog_confirm_callback(true);
      },
      Cancel: function() {
        $( this ).dialog( "close" );
        dialog_confirm_callback(false);
      }
    }
  });
}
function dialog_confirm_callback(value) {
  if (value) {
    alert("Confirmed");
  } else {
    alert("Rejected");
  }
}
于 2014-11-27T11:48:26.307 回答
0

不知道为什么你不想这样做。您实施的与我在相同情况下实施的相同,并且效果很好。在其自己的 JavaScript 函数中启动对话框,并根据单击的元素启动是/否函数。不需要警报框。

于 2013-06-13T02:21:32.337 回答
-3

您可以使用return来停止该功能。

于 2013-06-13T02:11:20.070 回答