2013-02-17 16 views
31

Chcę wykryć, kiedy klawisz Enter jest naciśnięty, na HTML, który zostanie wprowadzony po ładowaniu js.Korzystanie z jQuery 'on()' do obejrzenia dla klawisza Enter naciśnij

po prostu wykryć kiedy wciśnięciu klawisza Enter, mogę zrobić:

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

Ten kod działa dla ON(), ale obawiam się, że jest nieefektywne, ponieważ jQuery sprawdzi każdym naciśnięciu klawisza . Czy jest w tym coś nieskutecznego?

$('body').on('keydown','#textfield', function(event) { 
    if (event.keyCode == 13) { 
    console.log('Enter was pressed'); 
    } 
} 
+4

nr dosłownie tysiące rzeczy zdarzyć, gdy zostanie naciśnięty klawisz, to będzie jak kropla w oceanie. – JJJ

+0

skrypt wywoławczy na gotowe wydarzenie – EnterJQ

Odpowiedz

45

Jeśli chcesz uchwycić przyciśnięcie dowolnym miejscu na stronie -

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

nie martw się o tym, to kontrole za każdym naciśnięciem klawisza, to naprawdę nie jest oddanie znaczącego obciążenia w przeglądarce.

1

W kategoriach praktycznych nic nie musisz się martwić. Przeglądarka ma zamiar propagować to wydarzenie i chociaż może zostać uwięziona przez body i uruchomić selektor z delegowanego zdarzenia, nie jest to głębokie lub trudne praktyczne sprawdzenie dla JQuery, szczególnie w przypadku identyfikatora selektor.

+0

Zgadzam się. BTW: Tak naprawdę nie masz wyboru - nie ma sposobu, aby dodać słuchacza do klucza (choć byłoby miło). –

+0

... i nawet gdyby istniał sposób na dodanie słuchacza do pojedynczego klawisza, wewnętrznie przeglądarka * nadal * musiałaby reagować na każde naciśnięcie klawisza, aby określić, który klawisz został naciśnięty. – JJJ

8

Można nadal używać .on()

$(document).off('keyup#textfield'); 

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

jesteś ratownikiem życia :) –

Powiązane problemy