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'值?
每次調用'save'時,都會創建一個新的驗證器對象而不刪除舊的驗證器對象。你可以添加更多關於'save'被調用的代碼嗎?理想情況下,無論您調用'save'多少次,只應該調用'$()。validate()'__once__。 – Mathletics
save()從按鈕點擊處理程序直接調用。所以點擊按鈕,並保存獲取調用(並且只被調用一次)。我認爲submitHandler中的'this'是jquery驗證自己。不知何故,一旦同步被設置,它永遠不會再被設置。很奇怪。 –
...這聽起來像你做錯了。你應該在表單創建時調用'validate',讓它處理提交事件。 'save(false)'的目的是什麼? – Mathletics