【发布时间】:2014-09-22 15:37:52
【问题描述】:
我的网站上有一段时间的 JavaScript sn-p。其目的是通过在提交表单后立即清除输入文件来防止双击提交。它曾经工作得很好。今天我测试了它,由于某种原因,Chrome 提交了一个空字符串作为文件,但 Firefox 先提交文件,然后再清除它,正如预期的那样。谁能向我解释这种行为?
$('#uploadform').submit(function (e) {
if ($('#file').val().length == 0) {
return false;
}
e.preventDefault();
this.submit();
$('#file').val('');
});
【问题讨论】:
-
你的
submit函数是什么样的? -
Submit可能是一个异步函数,这意味着它可能会在值被清除后执行。 -
@KeVin 这似乎是
<form>元素自己的submitfunction,因为代码是一个jQuerysubmit处理程序(所以它只能附加到<form>对象),所以jQuery 提供的this对象必须是相同的<form>对象。 -
我假设在您清除该字段后,提交事件会在下一个滴答中处理。也许 Firefox 会在调用
submit而 Chrome 不会收集这些值。通常通过简单地禁用提交按钮来防止重复提交。或者,尝试setTimeout(function() { $('#file').val(''); }, 0);。
标签: javascript jquery google-chrome firefox forms