S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

Enterキーによるsumbitを禁止する(改)

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>