consider this scenario for validating:
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.
}
}
Now, my problem is that, the if block get executed before loops are finished. I expected the body of validateForm to be executed synchronously, but it seems that jQuery each() function gets executed asynchronously. Am I right? Why this doesn’t work?
Yes, the jQuery
eachmethod is synchronous. Nearly ALL JavaScript is synchronous. The only exceptions are AJAX, timers (setTimeoutandsetInterval), and HTML5 Web Workers.Your problem is probably somewhere else in your code.