2009-10-20 21 views
1

我寫了這段簡單的代碼來防止表單被多次提交。當按鈕被禁用時,jQuery腳本在safari中不起作用

jQuery.fn.preventDoubleSubmit = function() { 

    this.find(":submit").each(function() { 
    $(this).click(function() { 
     this.originalValue = this.value; 
     this.disabled = true; 
     this.beenClicked = true; 
    }); 
    }); 

    // [...] 

    return this.submit(function() { 
    if (this.beenSubmitted) { 
     return false; 
    } else { 
     this.beenSubmitted = true; 
    } 
    }); 

}; 

// [...] 

不幸的是,使用Safari它不起作用。當我點擊表單時,按鈕被禁用,Safari不提交表單。

有什麼想法?

回答

2

你知道你不必點擊表單提交按鈕,對嗎?我想你應該採取一種全新的方法,解釋這一點。爲了防止雙重提交,只需:

$(".selector").submit(window.mySubmitHandler); 

function mySubmitHandler(evt) { 
    $("#submitButton").attr("disabled", true); 
    //do other stuff here if you want 

    //redefine the function in the function itself 
    window.mySubmitHandler = function(evt) { 
     evt.preventDefault(); 
    } 

    return true; 
} 

這樣,函數將允許第一次提交併覆蓋自身。然後每一次後續嘗試都會停止事件的默認行爲。

相關問題