jQuery的validate 在ie9和火狐下能用 在ie8下无效解决方法。
juqery.validate.js中发现elements方法中$([]).add(this.currentForm.elements)方法在ie8下有问题,只能得到一个jquery对象。(ie9和火狐浏览器正常)
后来根据源码中的注释提示在网站 http://bugs.jquery.com/ticket/2114?得到答案 :
原文:
I had an issue where jquery.validate was failing in IE6, caused by the above error. I fixed this by updating line 446 and changed:
$([]).add(this.currentForm.elements).filter(":input")
to
$(':input',this.currentForm)
于是把juqery.validate.js中elements方法
???return $([]).add(this.currentForm.elements)
???.filter(":input")
???.not(":submit, :reset, :image, [disabled]")
???.not( this.settings.ignore )
???.filter(function() {
????!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;
???});
修改为:
???return $(':input',this.currentForm)
???.not(":submit, :reset, :image, [disabled]")
???.not( this.settings.ignore )
???.filter(function() {
????!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;
???});