【问题标题】:jQuery Deferred with jQueryUI/Bootstrap dialogsjQuery 延迟与 jQueryUI/Bootstrap 对话框
【发布时间】:2015-08-25 15:23:57
【问题描述】:

我一直在研究一种用于显示表单提交的确认对话框的解决方案。

基本上我想用我自己的替换内置的confirm() 函数,所以我可以将我的表单写为<form onsubmit="customConfirm()"></form>。我想我可以为此使用 promises,这样我就可以阻止表单提交、显示对话框、返回一个承诺,然后在单击“确定”和“取消”按钮时解决或拒绝该承诺。

问题是我的延迟对象似乎被忽略了,done 和 fail 函数都被调用了 - 我有 created a little jsFiddle 显示我在说什么。

我必须说我没有经常使用 Promise,所以也许我做错了什么。

【问题讨论】:

    标签: javascript jquery twitter-bootstrap jquery-ui jquery-deferred


    【解决方案1】:

    我不太确定你想要什么,但这很好用:http://jsfiddle.net/vvhttp4x/1/

    var dfd = confirmDialog();
    dfd.done(function () {
        alert("done");
    });
    dfd.fail(function () {
        alert("fail");
    });
    

    这是一个承诺,所以如果您立即执行dfd.state(),您将始终得到pending。

    您应该在done 或fail 处理程序中继续您的代码。

    【讨论】:

    • 谢谢,很快!这让我找到了答案,我需要将我的 done 和 fail 函数调用包装在烦人的函数中
    【解决方案2】:

    @Halcyon 的回答让我找到了答案。

    我需要将我的 done 和 fail 函数调用包装在无用函数中。

        var name = "Billy";
        var dfd = confirmDialog();
        $.when(
            dfd
        ).then(function() {
                alert('Hello there ' + name)
               },function() {
                alert('Goodbye ' + name)
        });
    

    Updated jsFiddle

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 2011-05-11
      相关资源
      最近更新 更多