暂停脚本执行的jQuery确认框
我正在寻找一个jquery/漂亮的替代标准对话框。jQueryUI有一个不错的界面,但它不像confirm()那样暂停脚本执行以等待响应。下面的演示应该显示两个div,显示前面确认框的选择,但是jquery对话框不会导致脚本等待 我特别需要一些能使脚本暂停的东西暂停脚本执行的jQuery确认框,jquery,jquery-ui,Jquery,Jquery Ui,我正在寻找一个jquery/漂亮的替代标准对话框。jQueryUI有一个不错的界面,但它不像confirm()那样暂停脚本执行以等待响应。下面的演示应该显示两个div,显示前面确认框的选择,但是jquery对话框不会导致脚本等待 我特别需要一些能使脚本暂停的东西 感谢您以错误的方式使用该对话框 你应该这样做 $("#dialog-confirm").dialog({ resizable: false, height: 140, modal: true, buttons: { Proc
感谢您以错误的方式使用该对话框 你应该这样做
$("#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模式。另外请注意,在第二个示例中,您可以在每次打开对话框之前更改对话框的内容