xa_zbl 发表于 2013-1-29 08:51:52

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, ")
   .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 = true;
    return true;
   });
修改为:
   return $(':input',this.currentForm)
   .not(":submit, :reset, :image, ")
   .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 = true;
    return true;
   });
页: [1]
查看完整版本: jQuery的validate 在ie9和火狐下能用 在ie8下无效解决方法。