2014-09-22 84 views
1

我在我的網站上有一段JavaScript代碼片段。其目的是通過在表單提交後立即清除輸入文件來防止雙擊提交。它曾經工作得很好。今天,我測試了它,由於某些原因,Chrome提交了一個空字符串作爲文件,但Firefox會首先提交該文件,然後按預期將其清除。任何人都可以向我解釋這種行爲嗎?Chrome和Firefox中form.submit()的不同JavaScript行爲

$('#uploadform').submit(function (e) { 
    if ($('#file').val().length == 0) { 
     return false; 
    } 
    e.preventDefault(); 
    this.submit(); 
    $('#file').val(''); 
}); 
+0

你的submit函數是什麼樣的? – 2014-09-22 15:42:24

+1

'Submit'可能是一個異步函數,這意味着它可能會在值被清除後執行。 – levi 2014-09-22 15:42:54

+0

@KeVin http://www.w3schools.com/jsref/met_form_submit.asp – Brewal 2014-09-22 15:43:27

回答

2

看起來您正在經歷一個競爭條件,其中表單提交發生在值被清除後。這種行爲在瀏覽器中可能會有所不同。考慮到您在提交沒有Ajax的表單時,一旦頁面重新加載,表單將被自動清除。爲了防止多次提交,你可以禁用提交按鈕:

$("#submit-button").attr("disabled","disabled"); 
相關問題