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, :p_w_picpath, [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, :p_w_picpath, [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;
   });

問題暫時解決。不知道還是否留下其他問題或者引起其他錯誤。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章