考虑此方案以进行验证:
function validateForm (validCallback) {
$('#first-name').add($('#last-name')).add($('#address')).each(function () {
// validating fields and adding 'invalid' class to invalid fields.
});
// doing validation this way for almost 50 fields (loop over 50 fields)
if ($('#holder .invalid').length == 0) {
// submitting data here, only when all fields are validated.
}
}
现在,我的问题是,在循环完成之前执行if块。我希望的主体validateForm
可以同步执行,但是jQuery each()
函数似乎可以异步执行。我对吗?为什么这不起作用?
each
本身是同步处理的。您是从循环内部开始自己的异步操作吗?
这里有类似的问题..您如何解决的?
—
sakthig
很久以前,我不记得了。但是我知道答案对我有帮助。因此,我可能在验证代码中使用了异步代码块(例如尝试使用ajax请求验证地址)。
—
Saeed Neamati 2012年
嗯..我这样解决了..我在每个函数中都执行“ return false”,但是我认为..现在正在每个函数中维护一个标志,并在验证结束时返回该标志..
—
sakthig
each
是同步的,但是里面的代码可能不是...