如何在使用jQuery Dialog时停止脚本?

时间:2013-06-13 02:03:04

标签: javascript jquery jquery-ui-dialog

我确信这里已多次询问过这个问题。我看到的latest Dec。 2012 。但我想问一下是否有人为这个问题找到了修复/更好的解决方法

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

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

的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脚本下面自由添加我的代码?有人有更好的解决方案吗?任何帮助,将不胜感激!提前致谢! :

5 个答案:

答案 0 :(得分: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");
    }
});

答案 1 :(得分:1)

你无法任意暂停脚本执行。在这种情况下,回调函数是最佳解决方案,因此在对话框下方的按钮选项下添加一个关闭事件处理程序,并在对话框关闭后将警报和任何其他代码执行。

答案 2 :(得分: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");
  }
}

答案 3 :(得分:0)

不确定为什么你不想这样做。您实施的内容与我在相同情况下实施的相同,并且工作得很好。在自己的JavaScript函数中启动对话框,并根据单击的元素启动yes / no函数。不需要警报框。

答案 4 :(得分:-2)

您可以使用返回来停止此功能。