zoukankan      html  css  js  c++  java
  • 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 //添加这行
    

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

    本文来源

  • 相关阅读:
    【codevs1922】骑士共存问题——网络流
    【bzoj1855||hdu3401】股票交易——单调队列优化dp
    【bzoj2002】弹飞绵羊——分块
    【bzoj3790】神奇项链——manacher+贪心
    【hdu2149】Public Sale
    【hdu1846】Brave Game
    【hdu3294】Girls' research——manacher
    【hdu3068】最长回文——manacher算法
    [BZOJ] 1634: [Usaco2007 Jan]Protecting the Flowers 护花
    [BZOJ] 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232542.html
Copyright © 2011-2022 走看看