2011-07-19 14 views
1

入力キーをフォームから送信することを止めるためのソリューションがWeb上に多数あります。最も一般的に使用する<body onkeypress = ...入力キーの送信を停止すると、複数行のテキスト入力でEnterキーも停止する

しかし、これらは、複数行のテキストボックスで入力キーを停止するという望ましくない副作用があるようです。誰もこれを回避する方法を知っているので、Enterキーは複数行のテキストボックスでも機能しますか?

おかげで、

AJ

答えて

3
<script language="Javascript"> 
    document.onkeydown = function() { 
     if (event.keyCode == 13) { 
      if (document.activeElement.tagName.toLowerCase() != "textarea") { 
         event.preventDefault(); 
         return false; 
       } 
     } 
    } 
</script> 

このような何かを?

+0

JQueryを使用しないように私の答えを編集しました。 – Jules

+1

これはうまく見えますが、activeElementとクロスブラウザのサポートに問題がある可能性があります。 –

+0

document.activeElementは、IE6 +、FF3 +、Safari 4以上、Opera 9以上、Chrome 9以上でサポートされています。 – Jules

1

あなたは(jQueryを使って)次のことを試すことができます。

$(function(){ 
$('input:not(textarea)').live('keypress', function(e) { 
     if (e.which == 13) return false; 
     if (e.which == 13) e.preventDefault(); 
    }); 
}); 

のみ入力フィールドはテキストエリアではなく、ターゲットとしています。

NON jQueryの

function disableEnterKey(e) 
    { 
      var key;  
      if(window.event) 
       key = window.event.keyCode; 
      else 
       key = e.which;  

      return (key != 13); 
    } 

そして、すべてのテキスト入力

<input type="text" name="textIn" onKeyPress="return disableEnterKey(event)"/> 

参考にonKeyPressイベント追加:http://www.bloggingdeveloper.com/post/Disable-Form-Submit-on-Enter-Key-Press.aspx

+0

返信いただきありがとうございますが、私は本当に非jqueryソリューションを好むでしょう。 –

+0

非jqueryソリューションの私の更新答えを参照 –

関連する問題