2016-07-12 145 views
1

我需要一個表單提交,但是當它提交我需要它,因爲查詢需要幾秒鐘就可以運行,並使用這種形式的人不理解的頁面加載,所以他們禁用按鈕在提交表單的按鈕上多次點擊5次或6次。我在Chrome中使用了一種工作方法,但在IE中它提交了兩次,我知道爲什麼,但我不知道如何使它適用於兩者。這裏是表格線:JavaScript表單提交問題

<form method="post" id="submitItem" action="secondPage.php"> 

我曾經嘗試這樣做這樣的各種版本與使用的onsubmit或其他相關的想法,但沒有工作。 Chrome中的「工作」的解決方案,在IE提交兩次是這種形式的呼叫和以下JS:

$(document).on("click", ".once-only", function(){ 
    $(".once-only").prop('disabled', true); 
    $('form').submit(); 
}); 

類「僅一次」是在點擊提交按鈕獲取禁用附着在提交按鈕,這兩種瀏覽器,但因爲我在形式實例化線有「行動=‘...’」它提交使用和「.submit()」。 Chrome不會使用該操作提交,而只會提交「.submit()」。有沒有辦法讓這個工作?我曾試圖改變JS使用功能或取出「.submit()」,甚至會改變什麼形式線的大組合,但我還沒有想出一個出來。有任何想法嗎? IE一直給我的問題與本網站隨時我用JS,AJAX的只能在Chrome瀏覽我的所有其他網頁,所以我真的很討厭使用IE,但超過半數使用該網站甚至不知道什麼是鍍鉻的人們。有小費嗎?如果需要,我可以分享任何其他代碼!通過on

// If the button is not dynamically generated , there is no need to delegate the event 
$('.once-only).off('click').on("click",function(event){ 
    // Rest of the code 
}) 

對於第二

$(document).on("click", ".once-only", function(event) { 
    event.preventDefault(); //this should disable the default form submit action 
    $(".once-only").prop('disabled', true); 
    $('form').submit(); 
}); 

回答

4

試試這個問題

您可以使用button type = "button"然後使用AJAX,而不是形式action

或者您可以使用button type="submit"

$('.once-only').off('click').on("click",function(event) { 
    event.preventDefault(); //prevent default behavior 
    $(".once-only").prop('disabled', true); 
    $.ajax({ 
    url:'some url' 
    //Rest of code 
    }) 
}); 

注阿賈克斯也能在IE

1

但在IE它提交兩次

對於您可以先off或取消綁定點擊如下:

0

編輯

或類似這樣的:onclick="this.form.submit();this.enabled=false;"


所以真正的答案是這樣的

onclick="setTimeout((function(){ this.disabled = true; }).bind(this),0);"

解釋:這個指示瀏覽器後禁用按鈕;由於JS在事件循環中工作,因此您排隊超時事件將在該onclick事件之外執行。

我覺得這只是愚蠢鉻讓我做這一招。