Проверка JQuery не работает, как ожидалось
Я использую jQuery validate () и когда у меня просто есть:
$("#myForm").validate({
onfocusout: function (valueToBeTested) {
if($(valueToBeTested).hasClass('required')){
if(this.element(valueToBeTested)){
$(valueToBeTested).addClass('valid');
} else{
$(valueToBeTested).addClass('invalid');
};
};
}
rules:
{
...(rules here)
}
});
это работает отлично. Но когда я пытаюсь добавить что-то вродеonkeyup
или жеsubmitHandler
:
$("#myForm").validate({
onfocusout: function (valueToBeTested) {
if($(valueToBeTested).hasClass('required')){
if(this.element(valueToBeTested)){
$(valueToBeTested).addClass('valid');
} else{
$(valueToBeTested).addClass('invalid');
};
};
},
submitHandler: function(i){
var badForm = false;
var errmsg = "<img src=\"invalid.png\"/><br/>";
var $required_fields = $(".required");
$required_fields.each( function(i) {
if(!($(i).valid())){
errmsg += $(i).name + " is required<br/>";
badForm = true;
}
if(badForm){
alert("bad");
$('#errdiv').html(errmsg).show();
window.scrollTo(0,0);
}
});
},
rules:
{
...
}
});
он начинает не работать: 1) в этом случае, кажется, никогда даже не войти вsubmitHandler
блок. То же самое, когда я пытаюсь продублироватьonfocusout
функциональность внутриonkeyup
блок. 2) когда присутствует второй блок, он портитonfocusout
блок в том смысле, чтоonfocusout
Блок будет работать в первый раз на любом заданном поле, затем не снова.
Я чувствую, что упускаю что-то очевидное, поскольку думаю, что делаю то, что написано в документации. Я хочу, чтобы проверка произошла на всех трех.onfocusout
а такжеonkeyup
в значительной степени одинаковы, ноsubmitHandler
должен сделать то же самое, плюс заполнить и показать ошибку div.
Что мне здесь не хватает?
Благодарю.