2010-08-05 4 views
2

je peux utiliser jQuery pour lier une fonction à un événement keyup dans le contexte d'un élément <input> tel que l'événement ne se déclenche que lorsque l'élément <input> se concentre:Trigger événement d'un jQuery que lorsqu'un élément <input> ne se concentre pas

$('#my-input').keyup(function(e) { 
    // only fires when the focus is on the <input> element 
} 

Comment puis-je lier une fonction à un événement keyup en dehors le contexte de l'élément input? Je veux être en mesure de déclencher un événement keyup que lorsque l'élément <input> ne se concentre pas:

$(':not(#my-input)').keyup(function(e) { 
    // this code fires regardless of whether the input element is focused 
} 

Malheureusement, la fonction est exécutée au-dessus indépendamment du fait que la boîte <input> se concentre.

Répondre

4
$('#my-input').focus(function(){ 
$('body').unbind('keyup'); 
}).blur(function(){ 
$('body').keyup(function(e) { 
    //do stuff 
}); 
}); 
+0

Cela a fonctionné, mais depuis que je devais répondre à des événements de clavier à la fois dans et hors de la zone d'entrée que je devais modifier il: $ ('input.lst'). eq (0) .focus (fonction (e) { $ ('body'). unbind ('keypress'). keyup (fonction (e) { // keyup in }); }). flou (fonction() { $ ('body'). unbind ('keyup') .clé de touche (funct ion (e) { // frappe sur une touche parmi }); }); – aaronstacy

0

Une autre solution est de vérifier si la cible d'événement est une entrée:

$('body').keyup(function(e) { 
     if(!$(e.target).is('input')){ 
     console.log('i am not input'); 
     }    
    }); 
Questions connexes