javascript
  • jquery
  • events
  • textarea
  • 2011-07-15 28 views 13 likes 
    13
    <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キーを無効にするにはどうすればよいですか?

    問題は、私がEnterキーを押すとクエリが送信され、すべてがOKですが、textareaのフォーカスが1行下がり、それが問題です。

    基本的には、入力にはその1つの機能のみを持たせたい(送信する)だけで終わらせたい。

    +1

    送信後に、テキストエリアにフォーカスを戻すだけで済みます。しかし、ユーザーが "検索"ボタンをクリックした場合、ボタンにフォーカスは移動しません。 – RobG

    答えて

    9

    をお試しくださいevent.preventdefaultを使用し、次のあなたが好きなものを行います。例えば

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

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

    +0

    いいです。これは私をたくさん助けました!ありがとうございました! – www139

    10

    複数の行を必要としない場合は<input type="text">を使用しないのはなぜですか?あなたはそれが "複数の単語の検索人"になると言いました。なぜこれには<textarea>が必要ですか?

    更新

    、jQueryの機能で、この

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

    ちょうどGoogleのように翻訳する – faq

    +0

    私の更新された回答を参照 –

    +6

    DOMの上にキー入力バインディングがある場合に備えて、 'return false;'を 'e.preventDefault()'に変更したいかもしれません。 – qwertymk

    9
    $(document).ready(function() { 
    
    $('textarea').keypress(function(event) { 
    
        if (event.keyCode == 13) { 
         event.preventDefault(); 
        } 
    }); 
    

    })。

    関連する問題