jQuery确认暂停脚本执行的框

时间:2011-03-21 20:31:14

标签: jquery jquery-ui

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

http://jsfiddle.net/EvilAmarant7x/r7Ur5/

我特别需要能够让脚本暂停的东西。

由于

2 个答案:

答案 0 :(得分:9)

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

你应该这样做

 $("#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>");
    }
}

答案 1 :(得分:9)

不幸的是,如果您使用自定义确认/模态窗口,则无法进行此操作。您将不得不使用回调或选择使用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
});