私はこれに似た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を定期的に使用しているので、GoogleChromeとInternetExplorerでテストするまではすべて問題ありませんでした。
Enter後のブラウザでキーを押すと、フォームが2回送信されることがありました。POST
DBに重複するエントリがあり、 Fiddlerを使用しているのが2つあるので、これは簡単にわかりました。
いくつかのテストの結果、問題はjQueryコードであることがわかりました。これは、テキストボックスが入力時に自動的に送信され、このコードを使用するPOST
と一部のブラウザーで1秒が生成されるためです。
私の質問は次のとおりです。
(私のテストでFirefoxが行ったように)ブラウザが2番目のフォームの投稿を賢く阻止しないのはなぜですか?
すべてのプラットフォームのすべての主要なブラウザでこの動作を期待する必要がありますか?
このコードを改善してJavaScriptを使用して送信を実行する方法はありますが、フォームを2回送信しないでください。