obacheの指摘を受け改造。
今の画面にtextareaは使用されてないけど、今後使用する場面がない訳ではないだろうということで。
textarea以外の、onkeydownイベントを持つ全てコントロールに対して、Enterキーによるsumbitを禁止するような対処を考えてみたが…
「onkeydownイベントを持つかもたないか」を判断する場合に、IEだと
(typeof hoge.onkeydown != 'undefined')
で拾えるけど、Firefoxは拾えなんだ。
Firefoxだと、「onkeydownイベントを持っていて、イベント処理が未定義」であってもundefinedになってるんだもん(IEだとnull)。
ということで、安直にtextarea以外のタグに、onkeydownイベントを定義するという対処としてみた。
基本的にFormが1つしかないし、elementsの要素として入力に関わるタグしか返ってきてないみたいだし。
<html> <head> <script type="text/javascript"> /* リターンキーによるsubmitを禁止する(textarea以外) */ function disableEnterKey() { var elems = document.forms[0].elements; for ( var i = 0 ; i < elems.length ; i++ ) { var tag = new String(elems[i].tagName).toLowerCase(); if (tag != "textarea") { elems[i].onkeydown = KeyEvent; } } } function KeyEvent(e) { pressKey = event.keyCode; if (pressKey == 13) { return false; } } </script> </head> <body onload="disableEnterKey();"> … </body> </html>