2012-07-06 33 views
25

Tôi chỉ có 1 trường nhập và tôi muốn đăng ký sự kiện onChange và onKeyPress để phát hiện khi người dùng hoàn thành đầu vào của họ hoặc nhấn phím Enter. Tôi chỉ cần sử dụng javascript. Cảm ơn đã giúp đỡ.Cách phát hiện khi người dùng nhấn Enter trong trường nhập

tôi có:

var load = function(){ 
    //I want to trigger this function when user hit Enter key. 
} 

document.getElementById('co').onchange=load; //works great 
document.getElementById('co').onKeyPress=load; 
//not sure how to detect when user press Enter 

html

//no form just a single input field 
<input type='text' id='co'> 
+0

có thể trùng lặp của [Nhập sự kiện nhấn phím trong JavaScript] (http://stackoverflow.com/questions/905222/enter-key-press-event-in -javascript) – Bae

Trả lời

53
document.getElementById('foo').onkeypress = function(e){ 
    if (!e) e = window.event; 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == '13'){ 
     // Enter pressed 
     return false; 
    } 
    } 

DEMO

+0

câu hỏi bổ sung. Làm cách nào để truy cập phần tử foo sau khi tôi phát hiện người dùng nhấn Enter? Tôi không thể sử dụng từ khóa này, nó đề cập đến đối tượng cửa sổ. Cảm ơn rất nhiều – FlyingCat

+0

'this.value' sẽ hoạt động .. nó có trong bản demo của tôi. – sachleen

+7

tôi muốn sử dụng 'if (keyCode === 13)' cho mức độ nghiêm ngặt – bobbyrne01

0

Dưới đây là một liên kết tốt mà thảo luận về chủ đề này và cung cấp một ví dụ làm việc

function DetectEnterPressed(e) { 
var characterCode 
if(e && e.which){ // NN4 specific code 
e = e 
characterCode = e.which 
} 
else { 
e = event 
characterCode = e.keyCode // IE specific code 
} 
if (characterCode == 13) return true // Enter key is 13 
else return false 
} 

http://hspinfo.wordpress.com/2008/09/01/using-javascript-detect-enter-key-pressed-event-in-a-textbox-and-perform-the-action/

8

Để làm cho nó qua trình duyệt:

document.getElementById('foo').onkeypress = function(e) { 
    var event = e || window.event; 
    var charCode = event.which || event.keyCode; 

    if (charCode == '13') { 
     // Enter pressed 
     return false; 
    } 
} 

Xem này câu hỏi để biết thêm chi tiết: javascript event e.which?

0

tôi sử dụng đoạn mã này và nó hoạt động tốt:

document.getElementById("theIdHere").onkeypressed = 
function() { 
    if(this.event.which === 13) 
     console('passed'); 
} 
2

Không ai trong số những câu trả lời như được nêu ra câu trả lời cụ thể câu hỏi này. Câu hỏi đặt ra là trong 2 phần. 1. Enter được nhấn. 2. Việc sử dụng được tập trung vào một đầu vào.

$('#input-id').on("keyup", function(e) { 
    if (e.keyCode == 13) { 
     console.log('Enter'); 
    } 
}); 

Cách này chỉ được phát hiện khi người dùng nhấn enter TỪ đầu vào đó.

1

Gần đây và sạch hơn nhiều: sử dụng event.key thay vì event.keyCode. Không còn mã số tùy ý nào nữa!

const node = document.getElementById('co'); 
node.addEventListener('keydown', function onEvent(event) { 
    if (event.key === "Enter") { 
     return false; 
    } 
}); 

Mozilla Docs

Supported Browsers

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