我有一个与此类似的 jQuery / HTML 代码:
<form action="/SomeAction" method="post">
<input id="my-textbox" type="text" placeholder="Write something and press enter to continue..." />
</form>
<script type="text/javascript">
$(function() {
$('#my-textbox').keyup(function(e) {
var $textbox = $(this);
if ($textbox.val().length > 0 && e.keyCode == 13) {
$textbox.parent('form').submit();
}
});
});
</script>
目的是在用户按下Enter键时自动提交表单。我经常使用 Firefox,所以在我使用 Google Chrome 和 Internet Explorer 进行测试之前,一切都很好。
当我Enter在后来的浏览器中按下键时,有时我会提交两次表单。这很容易注意到,因为我会在我的数据库中获得重复的条目,并且我会看到两个POST
使用 Fiddler 的 s。
经过一些测试,我发现我的问题是 jQuery 代码,因为没有它,文本框会在输入时自动提交,并且POST
在某些浏览器中使用此代码会产生一秒钟。
我的问题是:
为什么浏览器不能巧妙地阻止第二个表单的发布(就像 Firefox 在我的测试中所做的那样)?
我应该在所有平台的所有主要浏览器中都期待这种行为吗?
有没有办法改进这段代码,所以我使用 JavaScript 执行提交,但没有提交两次表单?