web-dev-qa-db-ja.com

jQuery:Enterキーを禁止する

私は防止しようとしています enter キーをテキストエリアに配置することはできませんが、機能していないようです。

$('#comment').keyup(function(event) {
  if (event.text.charCodeAt() == '10') {
     event.preventDefault();
   }
});
41
James T

jsfiddle.net で、このコードを試すことができる小さなデモンストレーションを書きました。

誰もが正しい答えを持っています:)

$('#comment').keypress(function (event) {
    if (event.keyCode === 10 || event.keyCode === 13) {
        event.preventDefault();
    }
});
85
kajo

keyupイベントをキャンセルすることはできません。ただし、keydownおよびkeypressイベントをキャンセルできます。ドキュメントで、「[イベント情報]」の下の「キャンセル」がkeyupに対して「いいえ」であることに注意してください。

keydownを使用すると、keypressよりもはるかに多くのキーをキャンセルできますが、キーが解除されるまでキャンセルしない場合は、keypressが必要です。幸いなことに、Enterキーはkeypressイベントのキャンセル可能なキーの1つです。

14
gilly3

つかいます event.keyCodekeydownイベント内:

$('#comment').keydown(function(event) {
   if(event.keyCode == 13) return false;
   //carry on...
});
7
Jacob Relkin
$('#comment').keypress(function(event) {
    if (event.keyCode == 13) {
        event.preventDefault();
    }
});
3
ThiefMaster

ここで提供される回答は、誰かが改行を入力するのを防ぎますが、誰かが改行を入力するのを防ぎません。

それらを削除するには、テキストの何らかの後処理(javascriptまたはサーバー側)を行う必要があります。

http://jsfiddle.net/we8Gm/

しかし、問題は、なぜですか?なぜ単に<input type="text"></input>これは単一行の入力要素なので、これを自動的に処理しますか?

2
Jeff B

.keypressで試して、return falseを使用してください。

がんばろう!

1