如何使用jquery validate使用最少的一个输入进行验证?

时间:2017-11-02 00:28:42

标签: javascript jquery jquery-validate

我的HTML代码如下:

<form method="post" id="form-product">
    <input type="text" id="test-1" name="test[1]" /><br>
    <input type="text" id="test-2" name="test[2]" /><br>
    <input type="text" id="test-3" name="test[3]" /><br>
    <input type="text" id="test-4" name="test[4]" /><br>
    <input type="text" id="test-5" name="test[5]" /><br>
    <button type="submit">Submit</button>
</form>

我的javascript代码如下:

$(document).ready(function () {
    $('#form-product').validate();
    $('[name^="test"]').each(function () {
        console.log('test')
        $(this).rules('add', {
            required: true,
            messages: {
                required: 'Minimal 1 input'
            }
        });
    });
});

演示和完整代码如下:http://jsfiddle.net/oscar11/XTtTP/6/

我想让验证动态

如果用户没有输入任何内容然后用户提交,则会显示“最小1输入”消息

如果用户在一个文本框中输入并提交,那么它将成功。

我创建的代码仍然不完美

如果用户在一个文本框中输入然后提交,它仍然有消息“最小1输入”。应该没有消息

我如何改进我的代码?

1 个答案:

答案 0 :(得分:1)

您的代码使它们全部成为必需品。如果您只需要一个字段,则需要使用require_from_group规则。

$(document).ready(function () {
    $('#form-product').validate();
    $('[name^="test"]').each(function () {
        console.log('test')
        $(this).rules('add', {
            require_from_group: [1, $('[name^="test"]')],
            messages: {
                require_from_group: 'Minimal 1 input'
            }
        });
    });
});

require_from_group规则是additional-methods.js文件的一部分。

DEMO:jsfiddle.net/nw53mw17/

我还建议您使用该插件的最新版本。你的jsFiddle使用的是真正的旧1.10,但最新版本是1.17;这是一个很大的不同。

修改

要将消息组合在一起,请使用groups选项。由于您在运行时之前不知道所有名称,因此请使用.each()来构造此参数。

// dynamically construct groups parameter
var grp = "";
$('[name^="test"]').each(function () {
    grp += $(this).attr('name') + " ";
});
grp = $.trim(grp);
var myGroups = {TESTS: grp};

// intialize plugin with options
$('#form-product').validate({
    groups: myGroups
});

DEMO 2:jsfiddle.net/nw53mw17/2/

如果您不喜欢在表单上放置此邮件,请使用the errorPlacement option

请阅读此插件的online documentation