2013-01-25 51 views
0

我創建了一個功能:驗證功能是不確定的

function createValidatorForForm(id) { 
    var formValidator = $(id).validate({ 
     errorClass:'help-inline', 
     errorElement:'p', 

     highlight:function (element, errorClass, validClass) { 
      $(element.parentNode.parentNode).addClass('error') 
     }, 
     unhighlight:function (element, errorClass, validClass) { 
      $(element.parentNode.parentNode).removeClass('error') 
     } 
    }); 
    return formValidator;} 

,然後我用它在我的代碼,在未來的方式:

var reportValidator = createValidatorForForm("#report-form"); 
var areaValidator = createValidatorForForm("#area-form"); 
var liquidationValidator = createValidatorForForm("#liquidation-form"); 
var comparableValidator = createValidatorForForm("#comparable-form"); 

但雖然螢火蟲知道formValidator,我可以看到它的在調試器狀態,他告訴我,reportValidator和另外三個變量未定義,我不能在我的代碼中使用它們:reportValidator.form()生成一個錯誤。但驗證本身適用於所有形式。

function saveReport() { 
if (!comparableValidator.form()){return}; 
$.ajax({ 
    url : SAVE_REPORT, // + "?json=" + ko.toJSON(reportModel), 
    data : { 
     json : ko.toJSON(reportModel) 
    }, ... 
+1

什麼是reportValidator.form()?請顯示完整的代碼如何調用驗證器 – renathy

+0

驗證不是標準的Jquery函數。你在使用哪個庫? –

+0

你在jquery.ready回調中調用'createValidatorForForm'嗎?像'$(document).ready(function(){... var reportValidator = createValidatorForForm(「#report-form」); ...})' –

回答

1

更改您這樣的代碼:

reportValidator = createValidatorForForm("#report-form"); 
    areaValidator = createValidatorForForm("#area-form"); 
    liquidationValidator = createValidatorForForm("#liquidation-form"); 
    comparableValidator = createValidatorForForm("#comparable-form");  

現在reportValidator和其他變量是全局的,可見外onDocumentReady回調函數。如果您輸入var,則只能在onDocumentReady回調函數內將變量設置爲本地並可用。

+0

TypeError:comparableValidator是未定義的 if(!comparableValidator.form()){return}; - 仍然不能正常工作 – Skeeve

+0

腳本沒有被緩存? –

+0

如果這不是一個緩存問題,你可以嘗試'window.comparableValidator = createValidatorForForm(「#媲美形式」);'答案中的代碼應該是這裏提出的同義詞,但也許在你的代碼中有一些代碼會打破它。 –