Помимо всего, что люди здесь ответили, еще 1 вещь, которая может вам помочь, - это добавить submitHandler к вашему объекту проверки
comment_validator = $("#commentform").validate({
rules: {
comment: "required"
},
messages: {
comment: "Please add a comment"
},
submitHandler: function(form) {
// form.submit();
// you can set a flag to true here
// instead of doing it on the last submit
// then fire your modal function where you simply test for this flag
// matching true
}
});
По умолчанию отправка формы запрещена, когда форма недействительна, и отправляется как обычно, когда она действительна. Вы можете обработать отправку вручную, используя submitHandler, как в примере выше.
для дальнейшей помощи, я думаю, вы можете установить глобальную переменную, а затем проверить свой последний вызов
function everythingOk(){
var bFlag = true;
if (
newpost_validator.numberOfInvalids() > 0
||
editpost_validator.numberOfInvalids() > 0
||
newquestion_validator.numberOfInvalids() > 0
||
editquestion_validator.numberOfInvalids() > 0
||
newupload_validator.numberOfInvalids() > 0
||
editupload_validator.numberOfInvalids() > 0
||
comment_validator.numberOfInvalids() > 0
){
bFlag = false;
}
if(bFlag){
ShowModal();
}else{
HideModal();
}
};
теперь вы должны иметь в виду, что если вы добавите submitHandler к проверкам, ваша функция everythingOk будет выполняться N раз, что означает, что она может дважды проверить, что все в порядке, для того, чтобы вы могли добавить дополнительный шаг, все вокруг я думаю, что ваше приложение нуждается в немного большем планировании, я думаю, я бы заставил каждую проверку установить другой флаг как true, а затем проверить, все ли флаги имеют значение true, или проверить, почему вы хотите использовать несколько форм на одной странице, почему бы не объединить их
Надеюсь, это поможет