经过多次努力,我终于得到了我的jQuery validate()来做我想做的事。
有一个例外。我看到其他人有这个问题,但现在我找不到那个页面,所以我不得不再问。
让我们使用“名字”作为我的字段。这是必需的,所以,如果我选择它,或者提交空白,我执行代码(在这种情况下,将invalid
类添加到元素中)并且一切正常。
如果我输入我的名字,它会成功应用valid
类。
然而,如果我开始输入我的名字,并且在输入“D”之后,它会显示我之前输入的值(因为表格不会这样做)而我选择它,会发生奇怪的事情。
输入字段的样式消失了。它不显示正在应用的有效或无效类。实际上它甚至没有显示我放在空白字段上的CSS。
如果我提交,它会被视为有效但仍然没有样式更改,除非我在该字段中输入其他内容。
在我的表单中的所有字段都是如此。
编辑:添加jquery代码
$("#myForm").validate({
onkeyup: function (valueToBeTested) {
if($(valueToBeTested).hasClass('required')){
if($(valueToBeTested).valid()){
$(valueToBeTested).removeClass('invalid').addClass('valid');
} else{
$(valueToBeTested).removeClass('valid').addClass('invalid');
};
};
},
onfocusout: function (valueToBeTested) {
if($(valueToBeTested).hasClass('required')){
if($(valueToBeTested).valid()){
$(valueToBeTested).removeClass('invalid').addClass('valid');
} else{
$(valueToBeTested).removeClass('valid').addClass('invalid');
};
};
},
rules:
{
....(rules)
}
});
就像我说的那样,它甚至在提交时承认字段值是有效的。它只是忽略onkeyup
和onfocusout
,直到我输入另一个字符,如果我从自动建议下拉列表中选择了值。