Javascript 输入元素数组的JQuery验证

Javascript 输入元素数组的JQuery验证,javascript,jquery,html,jquery-validate,Javascript,Jquery,Html,Jquery Validate,我需要验证输入文本元素数组(里程数):例如: <tbody> <c:forEach items="${list}" var="item"> <tr> <!--some other columns---> <td align="left"><input type="text" name="mileage" value="" /></td>

我需要验证输入文本元素数组(里程数):例如:

<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>
现在的问题是.validate.js只验证里程数的第一个元素。我能做什么?如何让插件验证所有输入文本


我希望你能帮助我

在这些情况下,您必须循环,如下所示:

$(document).ready(function() {
    $("#form1").validate({
        submitHandler: function(form) {
            form.submit();
        }
    });  
    $("#form1 input[name='mileage']").each(function() {
       $(this).rules("add", { required: true });
    });  
});

只影响第一个匹配项,因此您需要一个在那里循环并向所有匹配项添加任何规则。

在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();
    }
checkForm:function(){
这个.prepareForm();
对于(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){
对于(var cnt=0;cnt
根据答案,此函数还考虑了
忽略设置

        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();
        },
checkForm:function(){
这个.prepareForm();
对于(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){
对于(var cnt=0;cnt
使用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();
        },
checkForm:function(){
这个.prepareForm();
对于(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){
对于(var cnt=0;cnt

我希望能有所帮助;)

@Nick Craver。谢谢,我尝试了你的建议,但仍然不起作用:(.你确定我只需要做这些吗??(@eddy-是的,这就是所需要的一切…你的控制台中有没有JavaScript错误?@Nick Craver-没有一个错误。出于某种原因,插件只验证第一个元素:(@eddy-你有我可以看的网页吗?顺便说一句,如果你只想
必需的
那就是
@nick嗨,告诉你吧..你是整个SO社区我最喜欢的人。我喜欢你对社区负责的方式。我只想说
你是我的头号
(不是针对个人的)确实很好。但是我发现这个函数没有考虑“忽略”属性。我刚刚在我的回答中完善了函数。希望这能有所帮助。我不喜欢手动操作插件源代码,而是将自定义的热修复包含在单独的.js文件中,然后将其包含在jquery.validate.js之后的页面上。有没有办法通过扩展中的checkForm方法来实现这一点?我已经分叉了project在github上进行了一次拉取请求,因此希望您能在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();
        },