适用于form.submit()的Chrome和Firefox中的不同JavaScript行为

时间:2014-09-22 15:37:53

标签: javascript jquery google-chrome firefox html-form

我的网站上有一段JavaScript代码片段。其目的是通过在提交表单后立即清除输入文件来防止双击提交。它曾经工作得很好。今天我测试了它,由于某种原因,Chrome提交了一个空字符串作为文件,但Firefox首先提交文件然后按预期清除它。任何人都可以向我解释这种行为吗?

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

1 个答案:

答案 0 :(得分:2)

看起来您遇到了竞争条件,表单提交在值清除后发生。不同浏览器的此行为可能不同。考虑到您在没有ajax的情况下提交表单,一旦页面重新加载,表单将自动清除。要阻止多次提交,您可以禁用提交按钮:

 $("#submit-button").attr("disabled","disabled");