如何在 jQuery 验证插件中依赖者成功时将有效类添加到依赖元素



我有两个文本框,电话号码,#inputPh,和电子邮件,#inputEm。其中任何一个都是强制性的。 我使用以下规则:

         rules: {
                inputPhone: {                           
                        required: {depends: function(){
                        if($("#inputEm").val()=="")//return value based on textbox1 status
                        return true;
                        else
                        return false;
                            }
                        },
                        isNum: true,
                        minlength: 10,
                        maxlength: 12
                    },        
               inputEmail: {
                        required: {depends: function(){
                        if($("#inputPh").val()=="")//return value based on textbox1 status
                        return true;
                        else
                        return false;
                            }
                        },
                        email: true
                    }
         },
         highlight: function(element) {
                    $(element).closest('.control-group').removeClass('success').addClass('error');
        },
        success: function(element) {
                    element.addClass('valid').closest('.control-group').removeClass('error').addClass('success');
        }

验证工作正常,但问题是,当表单提交时带有空字段时,两个文本框都将突出显示错误类。 之后,当我在其中一个文本框中输入有效值时,只有该 particulor 字段获得成功类,而另一个将具有错误类, 即使表格可以提交。

如何通过 jQuery 验证器函数访问或传递依赖元素?

请改用additional-methods.js文件中包含的 require_from_group 方法。 根据代码注释:

/*
 * Lets you say "at least X inputs that match selector Y must be filled."
 *
 * The end result is that neither of these inputs:
 *
 *  <input class="productinfo" name="partnumber">
 *  <input class="productinfo" name="description">
 *
 *  ...will validate unless at least one of them is filled.
 *
 * partnumber:  {require_from_group: [1,".productinfo"]},
 * description: {require_from_group: [1,".productinfo"]}
 *
 */

错误类保留在其他字段上不会有任何问题......

$(document).ready(function() {
    $('#myform').validate({
        rules: {
            inputPhone: {
                require_from_group: [1, '.mygroup'],
                // isNum: true, // <-- no such rule in this plugin
                minlength: 10,
                maxlength: 12
            },
            inputEmail: {
                require_from_group: [1, '.mygroup'],
                email: true
            }
        }
    });
});

演示:http://jsfiddle.net/wWjWM/

或者,您可以使用 groups 选项将两个字段的消息合并到一个标签中。 但是,这可能不是可取的,因为它也适用于这两个领域的所有其他规则。

顺便说一句:additional-methods.js文件中有各种电话号码规则,您可以使用它们来代替minlengthmaxlength。 (此插件中也没有isNum这样的规则。 它被称为digits

最新更新