Enterキーのすべてのキーストロークをキャプチャしてテストしなければならないというやりすぎは本当に私を悩ませます。そのため、私の解決策は次のブラウザーの動作に依存しています。
Enterキーを押すと、送信ボタンでクリックイベントがトリガーされます(IE11、Chrome 38、FF 31でテスト済み) **(参照:http : //mattsnider.com/how-forms-submit-when-pressing-enter/)
したがって、私の解決策は、標準の送信ボタン(つまり<input type="submit">
)を削除して、Enterキーを押したときに魔法のようにクリックする送信ボタンがないため、上記の動作が失敗するようにすることです。代わりに、通常のボタンでjQueryクリックハンドラーを使用して、jQueryの.submit()
メソッドを介してフォームを送信します。
<form id="myform" method="post">
<input name="fav_color" type="text">
<input name="fav_color_2" type="text">
<button type="button" id="form-button-submit">DO IT!</button>
</form>
<script>
$('#form-button-submit').click(function(){
$('#myform').submit();
});
</script>
デモ:http : //codepen.io/anon/pen/fxeyv?editors=101
**フォームの入力フィールドが1つだけで、そのフィールドが「テキスト」入力の場合、この動作は適用されません。この場合、HTMLマークアップ(検索フィールドなど)に送信ボタンがない場合でも、Enterキーを押すとフォームが送信されます。これは、90年代以降の標準的なブラウザの動作です。