2011-05-05 56 views
1

jQuery plugin's Validation's方法Valid()在空集合上調用時會拋出錯誤this[0] is undefined。我認爲jQuery約定不會對空集合做任何事情,當然不會拋出任何錯誤,或者可能是我錯過了某些東西。請問有人能說明一下嗎?從插件jQuery驗證插件的方法在調用空集合時拋出錯誤

Demo

代碼片段。這個[0] - 如下所示 - 在集合爲空時拋出錯誤。

// http://docs.jquery.com/Plugins/Validation/valid 
valid: function() { 
    if ($(this[0]).is('form')) { 
     return this.validate().form(); 
    } else { 
     var valid = true; 
     var validator = $(this[0].form).validate(); // This is the line that throws error 
     this.each(function() { 
      valid &= validator.element(this); 
     }); 
     return valid; 
    } 
+0

所以不這樣做? – mcgrailm 2011-05-05 20:22:32

+0

我們應該在調用方法之前檢查集合嗎?我認爲我們不需要。我更新了代碼以包含addClass的調用,即使在空集合上調用時也不會引發任何錯誤。這是預期的行爲? – 2011-05-05 20:36:10

回答

1

什麼,我做的只是添加類,我想有那麼驗證我的形式有一個ID輸入和我打電話驗證它

$("#myform").validate() 

這裏是我如何使用形成一個example驗證

我還建議看demos

一般來說標準的jQuery的,如果你申請說喜歡一個click事件的元素不存在,你不會得到錯誤jquery跳過它。說,也許驗證應該做的一樣,但它顯然不這樣做,我會建議按照我張貼或檢查選擇器的長度之前申請驗證

+0

演示只是一小段代碼,我得到這個錯誤。我有一個相當複雜的形式,在某些情況下,我不想驗證整個表單,而只是一個字段。此外,這個問題的重點並不是要解決這個具體問題,而是要知道這是否也需要在其他地方進行處理。有許多地方像$(「someSelector」)。someMethod完成。是否應該重新審視所有這些地方? – 2011-05-05 20:46:02

+0

@amit_g看我的編輯 – mcgrailm 2011-05-05 20:54:56

相關問題