2010-11-11 1 views
0

J'utilise le plugin jQuery scrollTo avec les événements keydown pour faire défiler la fenêtre horizontalement avec les touches J et K. Cela fonctionne assez bien, cependant, j'ai des entrées de formulaire sur la page, donc je voudrais désactiver le comportement de défilement lorsque les entrées sont concentrées. Mon code est ci-dessous:Comment puis-je exclure des formulaires/entrées d'une fonction utilisant des commandes clavier?

// scroll left/right 
$(document).keydown(function (evt) { 
    if (evt.keyCode == 75) { 
    evt.preventDefault(); 
    $.scrollTo('+=201px', '', { axis:'x' }); 
    } else if (evt.keyCode == 74) { 
    evt.preventDefault(); 
    $.scrollTo('-=201px', '', { axis:'x' }); 
    } 
}); 

Répondre

2

Vous pouvez vérifier quelque chose comme

$(document).keydown(function (evt) { 
var element = $(evt.target); 
if (!element.is('input,textarea')) { 
    if (evt.keyCode == 75) { 
    evt.preventDefault(); 
    $.scrollTo('+=201px', '', { axis:'x' }); 
    } else if (evt.keyCode == 74) { 
    evt.preventDefault(); 
    $.scrollTo('-=201px', '', { axis:'x' }); 
    } 
    } 
}); 
0

Vous pouvez accéder à l'élément ciblé avec la propriété evt.target. Donc, la modification suivante devrait faire le travail:

$(document).keydown(function(evt){ 
    if(!$(evt.target).is("input")){ 
    if (evt.keyCode == 75) { 
     evt.preventDefault(); 
     $.scrollTo('+=201px', '', { axis:'x' }); 
    } else if (evt.keyCode == 74) { 
     evt.preventDefault(); 
     $.scrollTo('-=201px', '', { axis:'x' }); 
    } 
} 
}) 
Questions connexes