私たちのサイトには、jQuery ダイアログに挿入されるフォームがあります。フォーム データを入力して送信ボタン (jQueryUI ダイアログ ボタン) をクリックすると、フォームは最初に JavaScript によって検証され、次にサーバーに送信されます。必須のテキストボックスに値を貼り付けて送信した後、次回フォームを開いたときに、ユーザーがボタンをクリックせずにすぐに送信しようとすることがあることがわかりました(すべての直前にデバッガーステートメントでこれを確認しました.submit()
ボタンのクリックでフォーム送信が発生した場合にのみヒットしたインスタンス)。
意図しないフォーム送信のインスタンスに遭遇した人はいますか? サーバー側の検証以外に、それと戦う方法はありましたか?
明確にするために、イベントの順序は次のとおりです。
- ユーザーは [追加] ボタンをクリックしてフォーム (部分ビュー) を取得し、それをダイアログに挿入してから、ダイアログを開きます。
- ユーザーが値を必須のテキスト ボックスに貼り付けます (他にもいくつかのコントロールがあります)。
- ユーザーは、低レベルの検証を実行する送信ボタンをクリックし、ajax を介してフォームを送信し、成功後にダイアログを閉じます。
- 次のようになるまで、すすぎを繰り返します。
- ユーザーは [追加] ボタンをクリックしてフォームを取得し、それをダイアログに挿入します。ダイアログが開き、すぐに送信され、サーバーでの検証に失敗します。
Form.submit コールバック
$("#SearchEdit>form").submit(function (e) {
if (TermPresent()) {
return true;
} else {
e.preventDefault();
return;
}
});
function TermPresent() {
return ($("textarea#MySearch_SearchTerms").val() != "" ? true : false);
}