43

I want to detect when the enter key is pressed, on HTML that will be injected dynamically.

To simply detect when the enter key is pressed, I can do:

$('#textfield').keydown(function (e){ if(e.keyCode == 13){ console.log('Enter was pressed'); } }) 

This code works for on(), but I am worried it is inefficient since jQuery will check every time a key is pressed. Is there anything inefficient about this?

$('body').on('keydown','#textfield', function(event) { if (event.keyCode == 13) { console.log('Enter was pressed'); } } 
1
  • 4
    No. Literally thousands of things happen when a key is pressed, it'll be like a drop in the ocean. Commented Feb 17, 2013 at 8:59

3 Answers 3

63

If you want to capture the keypress anywhere on the page -

$(document).keypress(function(e) { if(e.which == 13) { // enter pressed } }); 

Don't worry about the fact this checks for every keypress, it really isn't putting any significant load on the browser.

Sign up to request clarification or add additional context in comments.

2 Comments

buy why is someone typing into a hidden field? @DCdaz
A field that has been hidden or injected and shown again after Dom.
10

You could still use .on()

$(document).off('keyup#textfield'); $(document).on('keyup#textfield', function(event) { if (event.keyCode == 13) { console.log('Enter was pressed'); } }); 

Comments

1

In practical terms, nothing you have to worry about. The browser is already going to be bubbling that event, and even though it may be trapped by the body and run a selector from the delegated event, this is not a deep or difficult practical check for JQuery to perform, especially with an ID-only selector.

2 Comments

Agree. BTW: You don't really have a choice - theres no way to add a listener to key (although it would be nice).
...and even if there were a way to add a listener to a single key, internally the browser would still have to react to every keypress to determine which key was pressed.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.