Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
暂停脚本执行的jQuery确认框_Jquery_Jquery Ui - Fatal编程技术网

暂停脚本执行的jQuery确认框

暂停脚本执行的jQuery确认框,jquery,jquery-ui,Jquery,Jquery Ui,我正在寻找一个jquery/漂亮的替代标准对话框。jQueryUI有一个不错的界面,但它不像confirm()那样暂停脚本执行以等待响应。下面的演示应该显示两个div,显示前面确认框的选择,但是jquery对话框不会导致脚本等待 我特别需要一些能使脚本暂停的东西 感谢您以错误的方式使用该对话框 你应该这样做 $("#dialog-confirm").dialog({ resizable: false, height: 140, modal: true, buttons: { Proc

我正在寻找一个jquery/漂亮的替代标准对话框。jQueryUI有一个不错的界面,但它不像confirm()那样暂停脚本执行以等待响应。下面的演示应该显示两个div,显示前面确认框的选择,但是jquery对话框不会导致脚本等待

我特别需要一些能使脚本暂停的东西


感谢您以错误的方式使用该对话框

你应该这样做

 $("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
    Proceed: function() {
          call_true_function();
        $(this).dialog("close");
    },
    Cancel: function() {
        call_false_function()
        $(this).dialog("close");
    }
}
});
或者类似的东西

**编辑**

像这样的

count = 0;
$("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
    Proceed: function() {
          proceed();
        $(this).dialog("close");
    },
    Cancel: function() {
        $(this).dialog("close");
    }
}
});

function proceed(){
    if (count != 10){
        $("#dialog-confirm").dialog('open');    
    }else{
        $('body').append("<div>Yes was selected " + count + " times!</div>");
    }
}
count=0;
$(“#对话框确认”)。对话框({
可调整大小:false,
身高:140,
莫代尔:是的,
按钮:{
继续:函数(){
继续();
$(此).dialog(“关闭”);
},
取消:函数(){
$(此).dialog(“关闭”);
}
}
});
函数继续(){
如果(计数!=10){
$(“#对话框确认”)。对话框(“打开”);
}否则{
$('body').append(“选择了Yes”+计数+“次数!”);
}
}

不幸的是,如果使用自定义确认/模式窗口,则无法执行此操作。您必须使用回调或选择使用1.5引入的新对象

使用“延迟”将如下所示:

var dfd = new $.Deferred();
$("#dialog-confirm").dialog({
  resizable: false,
  height: 140,
  modal: true,
  buttons: {
    Proceed: function() {
        dfd.resolve('Success!');
        $(this).dialog("close");
    },
    Cancel: function() {
        dfd.reject('Uh-oh!');
        $(this).dialog("close");
    }
  }
});

dfd.then(function() {
  // perform next action when user clicks proceed
});

dfd.fail(function() {
  // perform some action when the user clicks cancel
});

@mcgrailm虽然我意识到这是应该使用dialog的方式,但这种实现并不适合向用户提出一系列问题,然后根据聚合响应执行一些操作。也许我只是错过了。我想不出一种方法,至少在不做回调函数Call_Question_N+1()之类的事情的情况下是这样,这将创建一系列对话框中的下一个。对于像@EvilAmarant7x这样通常实现的东西来说,这似乎是一个迟钝的解决方案,事实上确实如此,但不幸的是,这正是野兽的本性。您不能仅仅停止javascript执行。javascript中没有暂停、睡眠或等待功能。最好使用委托或事件回调。有一些方法可以让一长串的问题看起来更好,但基本上它们都在做相同的事情。我要补充的是,一长串的是/否问题可能也不是最好的界面设计选择。例如,用户可能会意外地给出两次相同的答案,或者不记得或看不到他们刚刚回答“是”的内容。如果您有几个是/否问题要问,您可以尝试使用带有单选按钮的jQuery模式。另外请注意,在第二个示例中,您可以在每次打开对话框之前更改对话框的内容