2009-11-14 14 views
5

Estoy tratando de disparar un evento cuando se presiona cierta tecla. Funciona bien con este código:Desactivando la tecla de jquery cuando está en los campos de entrada o de área de texto

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

Pero, si el usuario se encuentra en un campo de formulario, me gustaría desactivar este comportamiento. ¿Cómo pruebo si el usuario está escribiendo en un campo de formulario para hacer esto? Gracias.

Respuesta

1

Tal vez se puede establecer una var mundial

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

entonces sólo comprueba el valor de disable_keyevents en el $ (document) .keypress caso antes de la conmutación.

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

Esto funciona muy bien, gracias! – Bill

0

Este código se activará cuando el usuario presiona carácter ASCII # 96 dentro de su forma - es posible utilizarlo para desactivar/modificar el "código predeterminado" para esta tecla.

$('#my_form_field').live('keypress', function(e) { 
    if (e.keyCode == 96) { 
     e.preventDefault(); 
     // Do stuff. 
    } 
}); 
Cuestiones relacionadas