我需要验证输入文本元素数组(里程数):例如:
<tbody>
<c:forEach items="${list}" var="item">
<tr>
<!--some other columns--->
<td align="left"><input type="text" name="mileage" value="" /></td>
</tr>
</c:forEach>
</tbody>
验证脚本如下 -
$(document).ready(function(){
$("#form1").validate({
rules: {
mileage: {
required: true
}
},
submitHandler: function(form) {
form.submit();
}
});
});
现在的问题是.validate.js只验证里程的第一个元素。我能做什么?如何让插件验证所有输入文本?
我希望你能帮助我。
答案 0 :(得分:8)
在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();
}
答案 1 :(得分:4)
根据eddy回答,此功能还会计算ignore
设置。
checkForm: function() {
this.prepareForm();
for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
var checkingElements = this.findByName( elements[i].name ).not(this.settings.ignore);
if (checkingElements.length !== undefined && checkingElements.length > 1) {
for (var cnt = 0; cnt < checkingElements.length; cnt++) {
this.check( checkingElements[cnt] );
}
} else {
this.check( elements[i] );
}
}
return this.valid();
},
答案 2 :(得分:3)
你必须在这些情况下循环,如下所示:
$(document).ready(function() {
$("#form1").validate({
submitHandler: function(form) {
form.submit();
}
});
$("#form1 input[name='mileage']").each(function() {
$(this).rules("add", { required: true });
});
});
答案 3 :(得分:0)
使用jquery validate 1.19.1并在第465行修改jquery.validate.js文件,用此函数替换应该没问题。
checkForm: function() {
this.prepareForm();
for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
var checkingElements = this.findByName( elements[i].name ).not(this.settings.ignore);
if (checkingElements.length !== undefined && checkingElements.length > 1) {
for (var cnt = 0; cnt < checkingElements.length; cnt++) {
this.check( checkingElements[cnt] );
}
} else {
this.check( elements[i] );
}
}
return this.valid();
},
我希望能有所帮助;)