标签:
方案一:如果 项目里不是只是个别页面 有多个name 验证,
那么利用 prototype 来写,把这段代码加在你所要使用多个name的页面 的js初始化里 即可
if ($.validator) {
$.validator.prototype.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;
});
}
}
方案二:修改源文件 这样做 就是所有的页面都可以验证多个name
利用 ctrl+F 查找 this.name in rulesCache 找到 源码 (不是压缩过的 min.js)。把这行if判断注释即可。
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;
});
},
如果是压缩js min.js :
查找 这段 (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
以上是网上找的解决方案,在这里备着,以便日后。
jquery validate 验证插件 解决多个相同的Name 只验证第一个的方案
标签:
原文地址:http://www.cnblogs.com/danywdd/p/5667903.html