• jquery validate 如何校验多个相同name


    在表单页中有如下代码

        <form>
            <input name="zhai"/><!-- 三个相同name的input -->
            <input name="zhai"/>
            <input name="zhai"/>
        </form>
    

    问题:jquery validate在对多个相同name校验时,只校验第一个input框。

    解决方案一:在表单页对应的js中加入如下代码 只有当前页可以解决对多个name校验

        if ($.validator) {
               $.validator.prototype.elements = function () {
                   var validator = this,
                     rulesCache = {};
                   return $(this.currentForm)
                   .find("input, select, textarea")
                   .not(":submit, :reset, :image, [disabled]")
                   .not(this.settings.ignore)
                   .filter(function () {
                       if (!this.name && validator.settings.debug && window.console) {
                           console.error("%o has no name assigned", this);
                       }
                       rulesCache[this.name] = true;
                       return true;
                   });
               }
           }
    

    解决方案二:修改源文件 所有的页面都可以验证多个name

    方式1:修改jquery.validate.js文件

    用 ctrl+F 查找 this.name in rulesCache 注释掉如下代码。

        elements: function() {
                var validator = this,
                    rulesCache = {};
    
                // select all valid inputs inside the form (no submit or reset buttons)
                return $(this.currentForm)
                .find("input, select, textarea")
                .not(":submit, :reset, :image, [disabled]")
                .not( this.settings.ignore )
                .filter(function() {
                    if ( !this.name && validator.settings.debug && window.console ) {
                        console.error( "%o has no name assigned", this);
                    }
                    // 注释掉这里
                    // select only the first element for each name, and only those with rules specified
                    //if ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) {
                    //    return false;
                    //} 
    
                    rulesCache[this.name] = true;
                    return true;
                });
            },
    

    方式2:修改jquery.validate.min.js文件用 ctrl+F 查找(c[this.name]=!0,!0)})

    return !this.name && b.settings.debug && window.console && console.error("%o has no name assigned", this),
    //this.name in c || !b.objectLength(a(this).rules()) ? !1 : (c[this.name] = !0, !0)//注释这行
    c[this.name] = !0, !0 //添加这行
    

    解决方案一验证可用,其他方案暂未校验。

    本文来源

  • 相关阅读:
    Echart 动态生成series数据
    转换Excel格式
    .NET接收邮件下载邮件附件——openpop.net
    百度Echart 地图
    mobiscroll 日期问题
    jQuery自动完成插件flexselect
    HTML5 video 连续播放视频
    team foundation server 工具的使用
    实现主成分分析与白化
    白化(预处理步骤)【转】
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232542.html
Copyright © 2020-2023  润新知