inputでエンターキーを押しても、formのsubmitイベントが発生しないのはどうすれば良いの?

いつも忘れて混乱するので書いておく。細かいルールを解説したページを前見たんだけど見つけられない……

formの中にinput[type=submit]なinput要素がないと、テキストフィールドでエンターを押してもsubmitイベントが発生しない。見えないようにしたsubmitボタンを、

<input type="submit" style="float:left; opacity:0; height:1px; width:1px; margin:0" value="to fire submit event on enter">

とでも書いて、設置しておく。display:noneだと、やっぱりsubmitイベントが発生しない。


でこの辺に悩んだ結果「Enterキーが押されたらsubmit」とかやると、日本語変換の確定とかの思わぬタイミングでsubmitされて悲しい思いをすることになる。まあ日本人ならちょっと触った時点で気づくだろうから、ここに書いてもしょうがないだろうけど。アメリカ人は最後まで気づかないんだと思う。例:Pivotal TrackerのTask欄。