0

我有两个文本框,电话号码#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');

        }

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

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

4

1 回答 1

1

而是使用文件require_from_group中包含additional-methods.js方法。根据代码注释:

/*
 * 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,您可以使用这些规则来代替minlengthmaxlengthisNum(在这个插件中也没有这样的规则。它被称为digits。)

于 2013-10-04T17:08:08.723 回答