ユーザーがダイアログフォームを2回送信しないようにしたいと思います。
これが私の送信コードです:
$('form', dialog).submit(function () {
if (dialogSubmitted) { return false; }
dialogSubmitted = true;
...
...
});
ここで、dialogSubmittedは、フォームがすでに送信されているかどうかを示す変数です。問題はそれが機能しないことです。ダイアログを開いてEnterキーを2回(すばやく)押すと、フォームが2回送信されます。
何か案が?
ありがとう。
アップデート
エンターキーを2回すばやく押すと失敗した別の試みがあります。
$('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投稿を行います(従来のフォーム送信の代わりに)。多分問題はありますか?
GoogleChromeからのトレースのキャプチャは次のとおりです。
2つの投稿があることがわかります。Enterキーをすばやく2回押すか、送信ボタンをすばやく2回クリックした場合にのみ発生します。
何か案が?ありがとう。