Désactivation de jquery keypress dans les champs de saisie ou de texte

J’essaie de déclencher un événement lorsqu’une certaine touche est enfoncée. Cela fonctionne bien avec ce code:

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

Mais si l’utilisateur est dans un champ de formulaire, j’aimerais désactiver ce comportement. Comment tester si l’utilisateur tape dans un champ de formulaire pour le faire? Merci.

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

Peut-être que vous pouvez définir une variable globale

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

il vous suffit ensuite de vérifier la valeur de disable_keyevents dans l’événement $ (document) .keypress avant le commutateur.

Ce code se déclenche lorsque l’utilisateur appuie sur le caractère ASCII n ° 96 dans votre formulaire. Vous pouvez l’utiliser pour désactiver / modifier le “code par défaut” de cette touche.

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