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 年代以降の標準的なブラウザの動作です。