我一直致力于为表单提交显示构造对话框的解决方案。
基本上我想用myown替换内置的confirm()
函数,所以我可以将我的表单写成<form onsubmit="customConfirm()"></form>
。我可以使用 promises ,因此我可以阻止表单提交,显示对话框,返回一个承诺,然后单击“确定”和“取消”按钮解决或拒绝该承诺。 / p>
问题是我的延迟对象似乎被忽略了,done
和fail
函数都被调用了 - 我created a little jsFiddle显示了我在说什么。
我必须说我没有很多承诺,所以也许我做错了。
答案 0 :(得分:1)
我不确定你的意图,但这很好用:http://jsfiddle.net/vvhttp4x/1/
var dfd = confirmDialog();
dfd.done(function () {
alert("done");
});
dfd.fail(function () {
alert("fail");
});
这是一个承诺,所以如果你马上做dfd.state()
,你将永远得到pending
。
您应该在done
或fail
处理程序中继续使用您的代码。
答案 1 :(得分:0)
@Halcyon的回答让我找到答案。
我需要将done
和fail
函数调用包含在annoynomous函数中。
var name = "Billy";
var dfd = confirmDialog();
$.when(
dfd
).then(function() {
alert('Hello there ' + name)
},function() {
alert('Goodbye ' + name)
});