我有一个文本框,我想检查用户输入的值是否等于“Jhon”或某个名称。我尝试使用EqualTo验证规则,但它不起作用。
$('#home').validate({
rules: {
name: {
required: true,
equalTo: 'Jhon'
},
highlight: function(element) {
$(element).closest('.control-group').removeClass('success').addClass('error');
},
success: function(element) {
element
.text('OK!').addClass('valid')
.closest('.control-group').removeClass('error').addClass('success');
}
});
});
答案 0 :(得分:5)
您的代码有三个问题:
1)equalTo
规则用于将一个字段与另一个字段匹配,而不是字符串。要匹配字符串,您需要使用the addMethod
method编写自定义方法,我将在下面显示。
2)您错误地将highlight
和success
放在rules
选项的中。只有字段名称和规则声明在rules
内。 highlight
和success
回调函数是rules
的兄弟,而不是后代。您还错误地在);
内放置了.validate()
。
3)您正在使用highlight
回调函数,但您没有使用其补充函数unhighlight
。无论您使用highlight
设置什么,都只能使用unhighlight
删除。
这是您在下面的更正代码...
$(document).ready(function () {
$.validator.addMethod("customrule", function(value, element, param) {
return this.optional(element) || value === param;
}, "You must enter {0}");
$('#home').validate({
rules: {
name: {
required: true,
customrule: 'John'
}
},
highlight: function (element) {
$(element).closest('.control-group').removeClass('success').addClass('error');
},
unhighlight: function (element) {
$(element).closest('.control-group').removeClass('error').addClass('success');
},
success: function (element) {
element.text('OK!').addClass('valid');
}
});
});