我是jquery验证插件的新手,但我想知道如何使用验证插件验证输入框数组。
下面是html代码。
<form id="transport-form">
<input type="text" name="qty[]" id="qty1">
<input type="text" name="qty[]" id="qty2" >
<input type="text" name="qty[]" id="qty3">
<input type="text" name="qty[]" id="qty4">
<input type="submit value="submit">
</form>
下面是jquery代码
jQuery("#transport-form").validate({
rules: {
'qty[]': {
required: true
}
},
});
但每次我单击submit时,它只验证第一个值。rest所有同名的值都不会被验证。请帮帮忙。
发布于 2014-07-10 15:43:54
有时我们需要验证输入元素的数组:例如-
<form name="signupForm" class="cmxform" id="signupForm" method="get" action="">
<select name="category[]" id="cat_1">
<option value="">Select One</option>
<option value="1">aa</option>
<option value="2">bb</option>
<option value="3">cc</option>
<option value="4">dd</option>
</select>
<select name="category[]" id="cat_2">
<option value="">Select One</option>
<option value="5">ee</option>
<option value="6">ff</option>
<option value="7">gg</option>
<option value="8">hh</option>
</select>
<select name="category[]" id="cat_3">
<option value="">Select One</option>
<option value="9">ii</option>
<option value="10">jj</option>
<option value="11">kk</option>
<option value="12">ll</option>
</select>
<input class="submit" type="submit" value="Submit">
</form>
现在我们将使用jquery验证插件jquery.validate.js来验证表单。条件是,用户将不得不从每个下拉列表中选择类别。验证的脚本如下所示-
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// validate the comment form when it is submitted
$("#signupForm").validate({
rules: {
"category[]": "required"
},
messages: {
"category[]": "Please select category",
}
});
});
</script>
现在的问题是,现成的jquery.validate.js只验证category[]的第一个元素。因此,我们需要对其进行一些修改。
在jquery.validate.js中,我们可以找到一个名为checkForm的函数,我们必须修改它,如下所示:
checkForm: function() {
this.prepareForm();
for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) {
if (this.findByName(elements[i].name).length != undefined && this.findByName(elements[i].name).length > 1) {
for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) {
this.check(this.findByName(elements[i].name)[cnt]);
}
} else {
this.check(elements[i]);
}
}
return this.valid();
}
我刚从http://www.codeboss.in/web-funda/2009/05/27/jquery-validation-for-array-of-input-elements/得到这个解决方案,希望这能帮助一些人..
发布于 2015-01-28 04:29:31
您可以传递一个选项来忽略字段名的一部分;对于原始的帖子注释,在HTML中有很多使用name[]样式名称的用例,特别是使用PHP。
$("#my-form").validate({
submitHandler: function(form) {
form.submit();
},
ignore: [],
rules: {
'category[]': {
required: true
}
}
});
发布于 2016-12-02 00:04:15
我注意到我使用的jQuery验证插件只检测第一个具有特定名称的元素。
另一种使jQuery验证插件也能检测到第一个以外的所有输入的方法是使名称唯一。因此,您可以替换:
<input type="text" name="qty[]" />
<input type="text" name="qty[]" />
<input type="text" name="qty[]" />
<input type="text" name="qty[]" />
通过以下方式:
<input type="text" name="qty[0]" />
<input type="text" name="qty[1]" />
<input type="text" name="qty[2]" />
<input type="text" name="qty[3]" />
https://stackoverflow.com/questions/24670447
复制相似问题