我想添加一条确认消息,当用户尝试提交表单时会弹出该消息。我想出了以下内容,但这看起来像是对我的黑客攻击。
$('#someform').submit(function () {
var form = $(this);
//a hack so that this handler does not fire again, see below
if (form.attr('data-confirm') == 'disabled') {
return true;
}
showConfirmPopup({
message: "Are you sure?",
success: function () {
form.attr('data-confirm', 'disabled');
form.submit();
hideConfirmPopup();
}
});
return false;
})
});
因此,当用户提交表单时,此处理程序将捕获事件并阻止,显示弹出窗口并阻止表单提交(通过返回false
)。当用户确认时,成功处理程序将全部形成提交方法,我们的处理程序将再次触发,但这次它将返回true
并将提交表单。
这可以在不编写data-confirm
属性的情况下获得吗?
答案 0 :(得分:2)
在这种情况下,您可以在成功回调中简单地unbind
submit
处理程序,然后重新提交表单。这样的事情可以解决问题:
...
success: function () {
hideConfirmPopup();
form.unbind('submit').submit();
}
答案 1 :(得分:0)
一个简单的错误:
$('#someform').submit(function () {
var submitForm = false;
showConfirmPopup({
message: "Are you sure?",
success: function () {
submitForm = true;
hideConfirmPopup();
});
return submitForm;
});
我假设showConfirmPopup
是同步的。