javascript
  • jquery
  • html
  • button
  • 2014-12-02 155 views 0 likes 
    0

    我目前正在查看防止使用按鈕標籤多次提交的所有可能性。我面臨的問題是,如果用戶點擊提交按鈕非常快,它將使他們能夠提交多個帖子。我想限制提交只是一個提交。我試圖使用onclick="this.disabled = true,但它使按鈕不工作。目前的按鈕標籤看起來像這樣:使用按鈕防止多次提交

    return "<button class='button btn btn-primary' id='gform_submit_button' onclick='this.disabled = true' type='submit'><span>Submit!/span></button>"; 
    

    任何人都可以指導我如何實現這一目標?

    回答

    2

    最終,您無法阻止客戶端上的多個提交。您必須在服務器端實施這些安全措施,無論您使用哪種服務器端語言(例如PHP)。

    +1

    不正確。您可以使用JavaScript阻止多個子映射。 – 2014-12-02 02:30:23

    +0

    不以確定的用戶無法覆蓋的方式。 – Greg 2014-12-02 02:31:12

    0

    客戶端,你可以點擊一次canSubmit已被設置爲false後做這樣的事情

    var canSubmit = true; 
    
    $('.button').click(function(){ 
    
        if(canSubmit) 
        { 
         // fire missiles 
         canSubmit = false; 
        } 
        else 
        { 
         // sorry missiles loading 
        } 
    
    }); 
    

    既然現在,第二次點擊將不會運行的代碼。驗證或處理您提交的數據後,您可以將canSubmit設置回true

    0

    按鈕打開時onClicked調用這個函數:

    function submitFunc(formId){. document.getElementById(formId).submit(); 
    } 
    
    0

    提交頁面總是會非常棘手。有兩個挑戰,提交

    1. 正如你正確地提到,用戶可以提交同一頁面多次
    2. 提交頁面之後,如果用戶刷新頁面,則也頁將被重新提交

    有處理這個挑戰的一個技巧是用GET調用重定向頁面。您用來加載數據的GET調用。詳細瞭解它here

    所以我建議一旦表單被提交,重定向頁面GET。

    在這個過程中,新的表單將被加載,如果用戶嘗試提交表單驗證將被觸發,將處理第一個挑戰。

    由於重定向,因爲最後一次調用GET時刷新數據將被加載並且沒有任何傷害。

    相關問題