我创建了这样的表单:
<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插件验证这样的多维数组?任何帮助将不胜感激。
答案 0 :(得分:3)
首先选择以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',
}
});
});
DEMO :jsfiddle.net/upq6uk0h/
答案 1 :(得分:0)
当定位多个元素时,还必须使用jQuery .each()方法。
$('.form-control').each(function () {
$(this).rules("add", {
required: true
});
});