首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery验证的条件验证

使用jquery验证的条件验证
EN

Stack Overflow用户
提问于 2013-04-24 21:47:32
回答 2查看 12K关注 0票数 1

使用jquery-validate 1.11.0

在我的表单中,我有一个条件,如果在字段A中输入文本,则字段B和C变为必填项。如果在字段B中输入文本,则A&C变为必填项,依此类推。此外,如果字段D中有任何文本,请将其清除。

如果在字段D中输入了文本,则清除字段A、B、C并使其不是必填项。

我有一个bug,如果我首先填写字段A,它似乎会根据需要绕过其他两个字段提交。如果我先填入字段b或c,则确保字段A是必填字段。

http://jsfiddle.net/rockitdev/mxtXX/47/

代码语言:javascript
复制
<form id="search" name="search" method="post" action="">
    <label for="a">Text A</label>
    <input id="a" type="text" class="search-person" />
    <label for="b">Text B</label>
    <input id="b" type="text" class="search-person" />
    <label for="c">Text C</label>
    <input id="c" type="text" class="search-person" />
    <label for="d">Text D</label>
    <input id="d" type="text" class="search-hcn" />
    <p>
        <input class="btn btn-primary" type="submit" value="Submit" />
    </p>
</form>

$('.search-person').focus(function () {
    $('.search-hcn').val(' ').removeClass("required");
    $('.search-person').addClass("required");
});

$('.search-hcn').focus(function () {

    $('.search-person').val(' ').removeClass("required");
    $('.search-hcn').addClass("required");
});

$('#search').validate();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-24 21:59:21

input字段上设置name属性可以解决这个问题。

JSFiddle

代码语言:javascript
复制
<form id="search" name="search" method="post" action="">
    <label for="a">Text A</label>
    <input id="a" type="text" class="search-person" name="person1" />
    <label for="b">Text B</label>
    <input id="b" type="text" class="search-person" name="person2" />
    <label for="c">Text C</label>
    <input id="c" type="text" class="search-person" name="person3" />
    <label for="d">Text D</label>
    <input id="d" type="text" class="search-hcn" name="hcn" />
    <p>
        <input class="btn btn-primary" type="submit" value="Submit" />
    </p>
</form>

debug选项对于查找此类错误非常有用。

代码语言:javascript
复制
$('#search').validate({debug: true});
票数 3
EN

Stack Overflow用户

发布于 2013-04-24 22:01:02

您可以使用validate提供的depends选项来完成此操作。

注意:删除该值不是验证的一部分

代码语言:javascript
复制
$('#search').validate({
    rules: {
        a: {
            required: {
                depends: function(element) {
                    return $('#b').val().length > 0 || $('#c').val().length > 0
                }
            }
        },
        b: {
            required: {
                depends: function(element) {
                    return $('#a').val().length > 0 || $('#c').val().length > 0
                }
            }
        },
        c: {
            required: {
                depends: function(element) {
                    return $('#a').val().length > 0 || $('#b').val().length > 0
                }
            }
        },
        d: {
            required: {
                depends: function(element) {
                    return $('#a').val().length == 0 || $('#b').val().length == 0 && $('#c').val().length == 0
                }
            }
        }
    }
});

演示:Fiddle

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16193704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档