jQuery验证 - 检查值是否与标签匹配?

时间:2011-09-30 10:59:20

标签: jquery validation jquery-validate

我在表单上使用jQuery Validation插件,并想知道检查输入值是否与标签相同的最简单方法是什么?

我正在使用jQuery获取每个输入标签的文本并将其作为每个表单元素的默认值插入,然后隐藏标签。

我想要做的是,如果提交表单时默认输入值未更改,则验证失败。

有什么想法吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以添加自定义验证方法(需要测试代码): -

$.validator.addMethod("value_label_same", function(value, element) {
    var label = element.attr('label');
    return label == value
}, "* Label and Value should match");

并使用它来验证字段: -

value_label_same : true

在此处查找文档 - http://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage

答案 1 :(得分:2)

This answer显示了如何创建自定义规则。假设您使用<label>作为控件,您将能够使用$("label[for=" + $(element).id + "])之类的jQuery选择器来获取标签,然后将文本与输入值进行比较。

答案 2 :(得分:1)

我认为你不需要一个插件来做到这一点。

$("input").each(function() {

$(this).blur(function(){

     var labelvalue = $("label").text();
     var inputvalue = $(this).val();

        if(labelvalue === inputvalue) {

          console.log("we have a match");

        }

        else { console.log("no match") }


    })
});

答案 3 :(得分:1)

有几种方法可以实现这一点,使用自定义验证器方法 我想你需要做这样的事情

获取标签文字的方法有很多种

如果标签文本=值

,我假设您希望验证失败
$(function (){
    jQuery.validator.addMethod(
        "doesnotmatchlabel",
        function(value, element) {
            var label = $(element).closest('div.elHolder').find('label').text();
            var result = ! label == value;
            return this.optional(element) || result;

        },
        "required"
    );

});

另外,要将此方法添加到元素中,您可以执行此操作...

    var textInputs= $('input:text');
    if ( textInputs.length ){
        textInputs.each(function (i,el){
            var jqEl = $(el);
            jqEl.rules( "add",
                {"doesnotmatchlabel": true}
            );
        })
    }