用于检查文本框值的jQuery Validation插件规则等于某些文本

时间:2013-08-02 07:22:13

标签: jquery jquery-validate

我有一个文本框,我想检查用户输入的值是否等于“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');
            }
      });

});

1 个答案:

答案 0 :(得分:5)

您的代码有三个问题:

1)equalTo规则用于将一个字段与另一个字段匹配,而不是字符串。要匹配字符串,您需要使用the addMethod method编写自定义方法,我将在下面显示。

2)您错误地将highlightsuccess 放在rules选项的中。只有字段名称和规则声明在rules内。 highlightsuccess回调函数是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');
        }
    });

});

工作演示http://jsfiddle.net/VYceT/