使用 jQuery 验证插件验证多维数组

Mir*_*kar 6 jquery jquery-validate multidimensional-array

我创建了这样的表单:

<form>
    <div class='row user">
         <div class="col-md-6 col-sm-6 input-group">
                <input type="text" class="form-control" name="user[0][name]" placeholder="Enter speaker's name">
         </div>
         <div class="col-md-6 col-sm-6 input-group">
                <span class="input-group-addon" id="basic-addon1"><i class="fa fa-envelope"></i> </span>
                <input type="text" class="form-control" name="user[0][email]"  placeholder="Email">
         </div>
    </div>
    <button onclick="addMoreUser()" class="add-more">Add User</button>
</form>
Run Code Online (Sandbox Code Playgroud)

在单击“添加用户”按钮时,它将添加一个类“用户”的 div,它的输入为 user[1][name] 和 user[1][email]。

我想根据需要验证电子邮件和姓名,并且电子邮件必须是有效的电子邮件格式。为了验证,代码如下:

 $('form').validate({
    rules : {
        "user[][name]" : {
            required: true
        },
        "user[][email]" : {
            email: true,
            required : true,
        },
    },
    messages :{
        "user[][name]" : {
            required: "Name is Mandatory"
        },
        "user[][email]" : {
            email: 'Email must be valid email address',
            required : 'Email is Mandatory',
        },
    }
});
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我如何使用验证插件验证这种多维数组吗?任何帮助,将不胜感激。

Spa*_*rky 8

首先选择所有input以 开头的元素user。使用 jQuery.filter()查找所有以name和结尾的元素email。然后使用 jQuery.each().rules()方法来循环并应用规则。

var user = $('input[name^="user"]');

user.filter('input[name$="[name]"]').each(function() {
    $(this).rules("add", {
        required: true,
        messages: {
            required: "Name is Mandatory"
        }
    });
});

user.filter('input[name$="[email]"]').each(function() {
    $(this).rules("add", {
        email: true,
        required: true,
        messages: {
            email: 'Email must be valid email address',
            required : 'Email is Mandatory',
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

演示jsfiddle.net/upq6uk0h/