0

asp.net mvc のリモート検証で非常に奇妙な動作が発生します。

動作を再現する手順は次のとおりです。

1.) Enter user name "1" in the database
2.) Enter user name "1" in the Create User dialog -> nothing happens, I expected an error message
3.) I remove the "1" in the text box.
4.) I enter "1" again in the text box. -> Again nothing happens.
5.) Then I click with the mouse somewhere on the dialog
6.) Suddenly the error message appears, that user name "1" already exists ?

これは、リモート検証が asp.net mvc で機能することが期待される方法ですか?

さらに悪いことに、送信ボタンをクリックすると、検証アクションと作成アクションの両方が起動され、予期しない/制御不能な結果が発生します。

4

2 に答える 2

0

実際には、単純なソリューションで解決できます。特定の入力のkeypressイベント内に検証を配置できるため、次のようになります。

$("input[type='text'"]).keypress(function() {
  $(this).valid();
});
于 2012-12-20T09:46:30.927 に答える
0

uが説明したプロセスによって、2つのことが起こる可能性があります..

  1. jQuery のテキスト変更イベントは、それぞれの入力タグが (タブの押下またはマウスのクリックによって) フォーカスを失ったときにのみ発生します。

  2. リモート検証では、AJAX 要求を送信してから応答を取得するのに時間がかかるため、リモート検証要求が適切なタイミングで送信されていることを確認する必要がありますが、取得している応答は偶然にもマウス クリックと一致します。

于 2012-04-29T19:27:19.347 に答える