javascript
  • jquery
  • events
  • textarea
  • 2011-07-15 4297 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> 
    

    Tôi có biểu mẫu này ... nó không có nút gửi vì tôi đang sử dụng jquery và dưới biểu mẫu này là khu vực div nơi kết quả sẽ được hiển thị. Nó là một công cụ tìm kiếm không có một hộp đầu vào mà thay vào đó có một vùng văn bản. Điều này là bởi vì nó sẽ là một người tìm kiếm nhiều từ.Làm cách nào để vô hiệu hóa phím ENTER trên vùng văn bản của tôi?

    Vấn đề là nếu tôi nhấn enter, truy vấn được gửi và mọi thứ đều ổn ... nhưng trọng tâm trên textarea đi xuống một dòng và đó là một vấn đề đối với tôi.

    Về cơ bản, tôi muốn nhập có một chức năng duy nhất (gửi) không kết thúc gì khác.

    +1

    Bạn chỉ có thể đặt trọng tâm trở lại vào vùng văn bản sau khi gửi. Nhưng nếu người dùng nhấp vào nút "tìm kiếm", sẽ không tập trung vào nút nào? – RobG

    Trả lời

    9

    Trong chức năng jquery, sử dụng event.preventDefault và tiếp theo làm những gì bạn thích. Ví dụ

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

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

    +0

    tốt đẹp. Điều này đã giúp tôi rất nhiều! Cảm ơn bạn! – www139

    10

    Tại sao không chỉ sử dụng <input type="text"> nếu bạn không muốn nhiều dòng? Bạn đã đề cập đến nó sẽ là một "nhiều người tìm kiếm từ". Tại sao điều này yêu cầu một số <textarea>?

    Cập nhật

    Hãy thử điều này

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

    giống như trong google dịch – faq

    +0

    Xem câu trả lời cập nhật của tôi –

    +6

    Bạn có thể muốn thay đổi 'return false;' thành 'e.preventDefault()', chỉ trong trường hợp có các ràng buộc nhấn phím tiếp tục lên DOM – qwertymk

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

    });

    Các vấn đề liên quan