我有一个类似的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,所以一切对我来说OK,直到我在谷歌Chrome和Internet Explorer的测试。
当我按在后来的浏览器回车键,有时我会得到两次提交表单。 这是很容易发现,因为我会在我的数据库中得到重复的条目,我看到两个POST
S使用提琴手。
经过一些测试,我发现我的问题是jQuery代码,因为文本框会自动进入上没有提交它,使用此代码会产生第二个POST
在某些浏览器。
我的问题是:
为什么不浏览器巧妙地避免第二成形后(如Firefox在我的测试所做的那样)?
我应该期待在所有平台上的主流浏览器的这种行为?
有没有改善这种代码的方式,所以我进行了提交使用JavaScript,但不获取表单提交两次?