2014-09-22 51 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"); 
相关问题