jQuery 验证插件,两个字段之一是必需的

标签 jquery jquery-validate

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

至少必须填写其中 1 个字段,但也可以同时填写两个字段。

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

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

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

但是,如果只有一个字段为空,则该字段仍然获得“有效”类,这是我不想要的,因为我的有效 css 有一个绿色边框(因此空字段仍然有一个绿色边框)

那么:如何获取空字段(假设另一个字段有值)而不获取有效的类,从而获取绿色边框?

最佳答案

使用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选项,它将多个错误消息合并为一个。

关于jQuery 验证插件,两个字段之一是必需的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18315072/

相关文章:

javascript - 使用 jQuery,如何更改元素的 html 值? (div)

jquery - 由于两个 jquery 插件,文本区域在表格单元格内被切断 : Elastic Textarea and Validate (IE7 debugging)

jquery - jquery.validate 中的 addmethod

javascript - 根据可见内容部分的比例更改标题部分的位置

javascript - Chrome 上的 localStorage 在 getItem、setItem 之后重置

jquery - 如何从 Controller 内的事件访问范围?

javascript - 当 Firefox 自动滚动时捕获鼠标滚轮事件

javascript - 将 jQuery 更改函数绑定(bind)到提交函数

jQuery 验证插件 : callback when element value is valid

javascript - 带有 If/Else 语句的 Jquery 验证规则