我想防止用户两次提交对话框表单。
这是我的提交代码:
$('form', dialog).submit(function () {
if (dialogSubmitted) { return false; }
dialogSubmitted = true;
...
...
});
其中 dialogSubmitted 是一个变量,指示表单是否已提交。问题是它不起作用。当我打开对话框并按 Enter 两次(快速)时,表单被提交了两次。
任何想法?
谢谢。
更新
这是另一个尝试,当我快速按两次回车键时也失败了:
$('form', dialog).one('submit', function (evt) {
evt.preventDefault();
$(this).on('submit', function (evt) {
evt.preventDefault();
});
$.post($(this).attr('action'), $(this).serialize(), function (data, status) {
$('#my-modal').modal('hide');
...
...
}).error(function (error, status, a, b) {
$('.modal-body p.body').html(error.responseText);
writeError('msgError', pStopIndex.validationFailed);
});
// Unbind form submitting
$('form', dialog).unbind();
return false;
});
如您所见,我做 ajax 发布(代替经典表单提交)。也许问题在那里?
以下是从 Google Chrome 中捕获的跟踪信息:
我们可以看到有2个帖子。仅当我快速按两次 Enter 键或快速单击两次提交按钮时才会发生。
任何想法?谢谢。