2009-11-14 18 views
5

Próbuję odpalić zdarzenie po naciśnięciu określonego klawisza. To działa dobrze z tym kodem:Wyłączanie naciśnięcia klawisza JQuery w polach wejściowych lub tekstowych

$(document).keypress(function(e){ 
    switch(e.which){ 
      case 96:$("a.quicklinks").trigger('click'); 
      break; 
    } 

Ale jeśli użytkownik jest w polu formularza, chciałbym wyłączyć to zachowanie. Jak mogę sprawdzić, czy użytkownik wpisuje w polu formularza, aby to zrobić? Dzięki.

Odpowiedz

1

Może można ustawić globalną var

var disable_keyevents = false; 
$('textarea,input') 
    .focus(function() { disable_keyevents = true }) 
    .blur(function() { disable_keyevents = true; }); 

potem po prostu sprawdzić wartość disable_keyevents w $ (document) .keypress zdarzenie przed przełącznikiem.

16
$(document).keypress(function(e) { 
    if ($(e.target).is('input, textarea')) { 
     // event invoked from input or textarea 
    } 
    ...   
}); 
+0

Działa to świetnie, dziękuję! – Bill

0

Ten kod spowoduje, gdy użytkownik naciśnie ASCII # 96 wewnątrz formularza - można to wykorzystać, aby wyłączyć/zmienić kod „default” dla tego naciśnięciem klawisza.

$('#my_form_field').live('keypress', function(e) { 
    if (e.keyCode == 96) { 
     e.preventDefault(); 
     // Do stuff. 
    } 
}); 
Powiązane problemy