2012-06-12 13 views
31

Tôi đang cố gắng nhập phím Enter để kích hoạt chức năng khi nó được nhấn khi bên trong một hộp văn bản nhất định và không kích hoạt đầu tiên hoặc nút mặc định.Cách lấy khóa Enter trong hộp văn bản để kích hoạt chức năng chứ không phải nút đầu tiên/mặc định

Bạn có thể xem ví dụ về những gì đang xảy ra ở đây: http://jsfiddle.net/cutsomeat/WZ6TM/1/

Nếu bạn bấm phím khác bạn sẽ nhận được một hộp cảnh báo với mã phím, tuy nhiên nếu bạn nhấn phím Enter bạn sẽ không nhận hộp cảnh báo với mã khóa, nhưng thay vào đó là hộp cảnh báo trong sự kiện nhấp nút.

Rõ ràng phím Enter sẽ kích hoạt nút. Có cách nào để tránh điều này và thay vào đó, hãy nắm bắt phím Enter trong sự kiện keyup, sau đó kích hoạt một chức năng khác?

Trả lời

66

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

$('#myText').live("keypress", function(e) { 
     if (e.keyCode == 13) { 
      alert("Enter pressed"); 
      return false; // prevent the button click from happening 
     } 
}); 

Demo

+38

'.ive()' bây giờ được depriciated. Sử dụng '.on()' để thay thế. –

+2

tốt hơn để sử dụng 'bind()' thay vì 'on()' hoặc tệ nhất 'sống()' – giammin

+0

Sử dụng 'on()'. 'bind()' hiện được khấu hao. – Gavin

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

    $('#myText').keypress(function(e) { 
     if (e.keyCode == 13) { // detect the enter key 
      $('#myButton').click(); // fire a sample click, you can do anything 
     } 
    }); 

    $('#myButton').click(function(e) { 
     alert('Button click activated!'); 
    }); 

}); 

DEMO

Đối với yếu tố sống sử dụng .on() như dưới đây:

$(document).ready(function() { 

    $(document).on('keypress', '#myText', function(e) { 

     if (e.keyCode == 13) { // detect the enter key 
      $('#myButton').click(); // fire a sample click, you can do anything 
     } 
    }); 

    $(document).on('click', '#myButton', function(e) { 
     alert('Button click activated!'); 
    }); 

}); 
+0

Tôi có thể thích +1 điều này nhưng bạn thực sự nên giải thích tại sao keyup tốt hơn keydown/keypress – Schollii

16

Do e.preventDefault() trong keyDown để tránh hành động mặc định nút:

$('#myText').keydown(function(e) { 
    if (e.keyCode == 13) { 
     e.preventDefault(); 
    } 
    alert(e.keyCode); 
}); 
+2

Chỉ cần thay đổi if (e.keyCode = 13) thành if (e.keyCode == 13) –

47

Sử dụng .on() như .live() đã deprecated.

$(document).on("keypress", ".myText", function(e) { 
    if (e.which == 13) { 
     //do some stuff 
    } 
}); 
Các vấn đề liên quan