フォームの送信時に、以下の省略された検証コードを実行しています。控えめな検証が私のフォームに設定されています。
(function () {
"use strict";
$("#feedbackForm").submit(function () {
var t = $(this).serialize();
var val = $(this).validate();
console.log(val.errorList.length);
return false;
});
})();
Chrome でブレークポイントに到達すると、次のような動作が見られます。
コンソールから、コードが最初に実行されたとき、検証のエラー リストで 0 個のエラーが認識されたことがわかりますが、ブレークポイントを介して実行を一時停止すると、検証のエラー リストで 4 個のエラーが認識されます。また、初回以降は、正しいエラー数が実行時に正しく計算されます。
- これはどのように可能ですか?
- 実行時に正しいエラー数を取得するにはどうすればよいですか?
編集1:
jsfiddle でこの問題を再現できないので、何か他のことが起こっているに違いありません。
編集2:
また、送信ハンドラー内で使用すると、毎回2回目に正しい結果が得られることに注意する必要setTimeout()
がありますが、これはmattytommoが彼の回答で述べたことを裏付けているように見えるだけです。