jQuery延迟了jQueryUI / Bootstrap对话框

时间:2015-08-25 15:23:57

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

我一直致力于为表单提交显示构造对话框的解决方案。

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

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

我必须说我没有很多承诺,所以也许我做错了。

2 个答案:

答案 0 :(得分:1)

我不确定你的意图,但这很好用:http://jsfiddle.net/vvhttp4x/1/

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

这是一个承诺,所以如果你马上做dfd.state(),你将永远得到pending

您应该在donefail处理程序中继续使用您的代码。

答案 1 :(得分:0)

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

我需要将donefail函数调用包含在annoynomous函数中。

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

Updated jsFiddle