使用jQuery validate plugin

时间:2017-01-13 06:49:53

标签: jquery multidimensional-array jquery-validate

我创建了这样的表单:

<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>

单击“添加用户”按钮,它将再添加一个“用户”类的div,并以用户[1] [名称]和用户[1] [电子邮件]的形式输入。

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

 $('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',
        },
    }
});

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

2 个答案:

答案 0 :(得分:3)

首先选择以input开头的所有user元素。使用jQuery .filter()查找以nameemail结尾的所有元素。然后使用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',
        }
    });
});

DEMO jsfiddle.net/upq6uk0h/

答案 1 :(得分:0)

当定位多个元素时,还必须使用jQuery .each()方法。

 $('.form-control').each(function () { 
    $(this).rules("add", {
        required: true
    });
});