web-dev-qa-db-ja.com

テキストエリアでENTERキーを無効にするにはどうすればよいですか?

<form name='qform'>
<textarea name='q' rows='3' cols='60' wrap='hard' id='q' onkeydown="if (event.keyCode == 13) document.getElementById('clickit').click()"></textarea>
<input type='button' value='search' id='clickit' onclick="get();">
</form>

このフォームがあります... jqueryを使用しているため、送信ボタンがありません。このフォームの下には、結果が表示されるdiv領域があります。これは、入力ボックスがなく、代わりにテキストエリアがある検索エンジンです。これは、複数の単語の検索者になるためです。

問題は、Enterキーを押すと、クエリが送信され、すべてが正常であるということです...しかし、textareaへのフォーカスが1行下がるので、それは私にとって問題です。

基本的に、Enterには、1つの関数のみ(送信)が他の関数を終了しないようにします。

16
faq

Jquery関数で、event.preventdefaultを使用し、次に好きなことを行います。例えば

<script>
$("a").click(function(event) {
  event.preventDefault();
//Do your logic here
});
</script>

http://api.jquery.com/event.preventDefault/

10
Null Head
$(document).ready(function() {

    $('textarea').keypress(function(event) {

        if (event.keyCode == 13) {
            event.preventDefault();
        }
    });
});
13
alpc

複数行が必要ない場合は、<input type="text">を使用しないのはなぜですか? 「マルチワードサーチャー」になるとおっしゃいました。なぜこれには<textarea>が必要なのですか?

更新

これを試して

$('textarea').bind('keypress', function(e) {
  if ((e.keyCode || e.which) == 13) {
    $(this).parents('form').submit();
    return false;
  }
});
11
Michael Mior