2014-02-10 113 views
0

我在下面的函數中使用'sync'變量時遇到了問題,一旦它被設置爲第一次,使用jQuery驗證Javascript範圍問題

如果我所說的下面......

save(true); 
save(false); 

var save = function (sync) { 

     // value of sync here always reflects what is passed in 

     $('form').validate({ 
      rules: { 
       ... 
      }, 
      submitHandler: function() { 
       var ajax = sync; // the first time sync is true, and then it is always true! 
      } 
     }); 
     $('form').submit(); 
    } 

第一次呼叫同步是'真'。在第二次調用之前,同步在驗證之前爲'假',但在submitHandler中,同步回到'true'。

我認爲這是一個範圍界定問題。在提交處理程序中,如何訪問傳入的'sync'值?

+2

每次調用'save'時,都會創建一個新的驗證器對象而不刪除舊的驗證器對象。你可以添加更多關於'save'被調用的代碼嗎?理想情況下,無論您調用'save'多少次,只應該調用'$()。validate()'__once__。 – Mathletics

+0

save()從按鈕點擊處理程序直接調用。所以點擊按鈕,並保存獲取調用(並且只被調用一次)。我認爲submitHandler中的'this'是jquery驗證自己。不知何故,一旦同步被設置,它永遠不會再被設置。很奇怪。 –

+1

...這聽起來像你做錯了。你應該在表單創建時調用'validate',讓它處理提交事件。 'save(false)'的目的是什麼? – Mathletics

回答

0

我解決了這個問題,通過使用jQuery驗證正確。正如@Mathletics所建議的,我現在在初始化時調用validate並使用Valid()來驗證表單。