jQuery Validate插件,需要两个字段中的一个

时间:2013-08-19 13:30:26

标签: jquery jquery-validate

我有一个包含2个字段的表单;手机号码。和电话号码。

必须填写至少一个字段,但两者都可以填写。

如果没有填充错误,我需要jquery validate来抛出错误。

我通过以下方式实现了这一目标:

rules: {
            mobile:{
                required: {
                    depends: function(element) {
                        return $("#regTelephone").val() === '';
                    }
                }
            },
            telephone:{
                required: {
                    depends: function(element) {
                        return $("#regMobile").val() === '';
                    }
                }
            }
}  

然而,如果只有一个字段是空的,那么这个字段仍然会得到'有效'类,我不想要这个类,因为我的有效css有绿色边框(所以空字段仍然有绿色边框)

所以:我如何获得空的字段(提供另一个有值)以获得无效的类,从而得到绿色边框?

2 个答案:

答案 0 :(得分:14)

使用the optional additional-methods.js file,有一个名为require_from_group的方法可以完全按照您的要求执行操作。 (您必须使用插件的至少版本1.11.1才能避免过去的错误。)

rules: {
    mobile:{
        require_from_group: [1, '.mygroup']
    },
    telephone:{
        require_from_group: [1, '.mygroup']
    }
},
....

1参数是该组中需要的数量。在HTML标记中,您论坛中的字段必须包含与您的第二个参数中指定的class匹配的class

<input type="text" class="mygroup" name="mobile" />
<input type="text" class="mygroup" name="telephone" />

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

我的演示还显示了groups选项,它将多个错误消息合并为一个。

答案 1 :(得分:-1)

<input type="text" name="mobile" id="regMobile">
<input type="text" name="telephone" id="regTelephone">

rules: {
            mobile:{
                required: {
                    depends: function(element) {
                        return $("#regTelephone").val() == ''
                    }
                }
            },
            telephone:{
                required: {
                    depends: function(element) {
                        return $("#regMobile").val() == ''
                    }
                }
            }
}