2013-08-20 46 views
-1

我正在使用jquery驗證插件,工作正常。我在兩個地方重複驗證邏輯,一個是表單提交,另一個是關注焦點。現在我正試圖將它提取到一個方法中,並在需要時重用它。我正在嘗試如下。將驗證邏輯提取到重用的方法中?

$(document).ready(function() { 

    validateForm(); 

    function validateForm(){ 
      $("#myForm").validate({ 
       onfocusout: function(element) { jQuery(element).valid(); } , 
       rules:{ 
       attribute: "required" 
      }, 
      messages:{ 
       attribute: "Required field" 
      } 
     }); 

     } 


    $('#myForm #submit').click(function(e) { 

      e.preventDefault(); 


    var validator = validateForm(); //here it shows error line 

    if(validator.form()){ 
      //do something 
     } 
}); 


}); 

如果我提取上面的邏輯,我得到如下的腳本錯誤。

Error: 'Undefined' is null or not an object 

我需要從方法中返回任何東西嗎?

謝謝!

+0

_I我正在使用jquery驗證插件,並正在fine_。我不這麼認爲,你正在調用一個尚未定義的函數。對不起,但這是一個混亂的代碼。 – undefined

回答

1

我對驗證插件沒有任何經驗,但是我可以告訴你,得到參考錯誤的原因是因爲validateForm()在完成執行時自動返回undefined

我猜form()是對象$().validate()回報的方法,如果是這樣,所有你需要做的就是讓validateForm()回報validate()結果像這樣

function validateForm(){ 
    return $("#myForm").validate({ /* options */ }); 
} 

祝你好運!

編輯:另外,你爲什麼在文件準備調用validateForm() - 肯定形式就是無論是在該點的標記......

0

分配驗證變量調用validateForm函數的結果。沒有返回語句的函數默認返回undefined。我沒有看到,你在哪裏定義表單方法。

您可以將參數添加到您的validateForm功能 - 要驗證寫形式的ID是這樣的:

function validateForm(id) { 
    $(id)... 
} 

然後調用它

validateForm('#myForm'); 

$('#anotherForm #submit').click(function(e) { 
    e.preventDefault(); 
    validateForm('#anotherForm'); 
}