暂停脚本执行的jQuery确认框

uelo1irk  于 2023-01-20  发布在  jQuery
关注(0)|答案(2)|浏览(110)

我正在寻找一个jquery/nice looking来替代标准对话框。jQUery UI有一个不错的对话框,但是它不会像confirm()那样暂停脚本执行以等待响应。下面的演示应该显示两个div,显示前面确认框的选择,但是jquery对话框不会导致脚本等待。
http://jsfiddle.net/EvilAmarant7x/r7Ur5/
我特别需要能让脚本暂停的东西。
谢谢

zzlelutf

zzlelutf1#

您使用对话框的方式错误
你应该这样做

$("#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){
        count++;
        $("#dialog-confirm").dialog('open');    
    }else{
        $('body').append("<div>Yes was selected " + count + " times!</div>");
    }
}
oug3syen

oug3syen2#

不幸的是,如果你使用自定义的确认/模态窗口,这是不可能的,你将不得不使用回调或者选择使用1.5引入的新的deferred对象。
使用deferred将如下所示:

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
});

相关问题