我只需要在表单的一个或两个元素上使用focusCleanup而不是每个元素。有没有办法将jquery.validate中的focusCleanup应用于几个输入字段而不是全部?例如,我想清理焦点上的input1和input2,而不是input3。我尝试将focusCleanup添加到规则中,但这不起作用。有任何想法吗?
$("#myForm").validate({
onkeyup: false,
focusCleanup: true,
rules: {
input1: {
required: true,
},
input2: {
required: true,
},
input3: {
required: true,
},
},
messages: {
input1: {
required: Messages.ERR_USERNAME_GUIDE,
},
input2: {
required: Messages.ERR_PASSWORD_GUIDE,
},
input3: {
required: Messages.ERR_PASSWORD_GUIDE,
},
}
});
答案 0 :(得分:0)
没有推荐的方法在documented options for jquery validate中执行此操作,但是您可以通过传入自己的onfocusin函数作为选项来实现此目的。
在下面的例子中,我给出了不需要清理类'nocleanup'的元素。然后我复制了default onfocusin method,插入一个if语句来检查是否存在这个类。
html表格摘录
<input name="fname" id="fname" class="required">
<input name="sname" id="sname" class="required nocleanup">
<input name="other" id="other" class="required">
带验证码
$("form").validate({
focusInvalid: false,
focusCleanup: true,
onfocusin: function (element, event) {
this.lastActive = element;
if (!$(element).hasClass("nocleanup")) {
if (this.settings.focusCleanup && !this.blockFocusCleanup) {
if (this.settings.unhighlight) {
this.settings.unhighlight.call(this, element, this.settings.errorClass, this.settings.validClass);
}
this.addWrapper(this.errorsFor(element)).hide();
}
}
},
submitHandler: function () {
alert('form ok');
}
});
NB。 focusin是default focusin method的直接副本,只添加了一个if语句。