jQuery Validate插件:只有一个字段需要多个

时间:2013-03-08 11:49:37

标签: jquery ruby-on-rails-3 jquery-validate

Wrt this question on stackoverflow,如果电话和移动字段为空,则会给出错误消息,但在此之后,当两者中的任何一个填满并且表单再次提交时,错误消息也会保留。验证检查使用输入的旧值进行,并且当页面刷新时,它将获取新值。如果有人能帮我解决这个问题,我将不胜感激吗?

2 个答案:

答案 0 :(得分:3)

1)根据the question you've linked,我使用this jsFiddle构建了the depends option,但仍然看到很多问题。这些规则似乎根本不起作用,因为这两个字段总是必需的。

2)require_from_group文件中包含additional-methods.js规则。对于要定位的规则,这两个字段必须具有相同的class,在本例中为.group。但是这个方法has some known bugs禁用了表单上的所有其他规则

DEMO http://jsfiddle.net/SvSrR/

$(document).ready(function () {

    $('#myform').validate({ // initialize the plugin
        groups: {
            name: "telephone mobile"
        },
        rules: {
            telephone: {
                require_from_group: [1, '.group']
            },
            mobile: {
                require_from_group: [1, '.group']
            }
        }
    });

});

3)相反,我构建了一个名为customrule的自定义规则(你可以根据需要命名),它正如我所认为的那样工作。我还使用groups选项将两个错误消息合并为一个。

工作演示:http://jsfiddle.net/2g8hL/

$(document).ready(function () {

    $.validator.addMethod("customrule", function (value, element) {
        return (!($("#mobile").val() === '') || !($("#telephone").val() === ''));
    }, "please fill out at least one");

    $('#myform').validate({ // initialize the plugin
        groups: {
            name: "telephone mobile"
        },
        rules: {
            telephone: {
                customrule: true
            },
            mobile: {
                customrule: true
            }
        }
    });

});

答案 1 :(得分:0)

尝试放置自定义错误放置

$('#form').validate({
    errorPlacement: function(error,element) {
                       return true;
                    }
});