读书人

jQuery的validate 在ie9和火狐上能用

发布时间: 2012-08-27 21:21:56 作者: rapoo

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;
???});

读书人网 >Web前端

热点推荐