我在提交表单时运行了以下缩写验证代码。为我的表单设置了不显眼的验证。
(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:
我还必须注意,setTimeout()
在提交处理程序中使用每次都会在第二次获得正确的结果,但这似乎只是证实了 mattytommo 在他的回答中提到的内容。