Jquery Listbox événement de Changement ne fait pas de feu sur le Clavier de défilement
J'ai une simple liste sur un formulaire HTML et cette base de jQuery code
//Toggle visibility of selected item
$("#selCategory").change(function() {
$(".prashQs").addClass("hide");
var cat = $("#selCategory :selected").attr("id");
cat = cat.substr(1);
$("#d" + cat).removeClass("hide");
});
L'événement de changement de feux d'amende lorsque l'élément est sélectionné à l'aide de la Souris, mais quand j'ai faites défiler les éléments à l'aide du clavier de l'événement n'est pas déclenché et mon code ne s'exécute jamais.
Est-il une raison à ce comportement? Et quelle est la solution?
Vous devez vous connecter pour publier un commentaire.
La
onchange
événement n'est en général pas tiré jusqu'à ce que l'élément perd le focus. Vous aurez également besoin d'utiliseronkeypress
. Peut-être quelque chose comme:Vous aurez envie à la fois
onchange
etonkeypress
pour tenir compte à la fois la souris et l'interaction du clavier respectivement.keypress
événement ne fonctionne pas sur chrome, maiskeyup
fonctionné correctementParfois, le changement de comportement peut varier d'un navigateur, comme une solution de contournement, vous pourriez faire quelque chose comme ceci:
Vous pouvez la chaîne d'événements que vous souhaitez et manuellement le feu de l'événement change.
IE:
Le comportement que vous décrivez, l'événement de changement de déclenchement à l'aide du clavier de défilement dans un élément select, est en fait un Internet Explorer bug. Le DOM Niveau 2 de l'Événement cahier des charges définit les
change
événement comme ceci:Si vous voulez vraiment ce comportement, je pense que vous devriez regarder les événements de clavier.
Vérifier un exemple ici...
J'ai eu ce problème avec IE sous JQuery 1.4.1 - les événements de changement sur les zones de liste déroulante n'étaient pas de tir si le clavier a été utilisé pour effectuer le changement.
Semble avoir été corrigé dans JQuery 1.4.2.
live
est obsolète. Utilisationon
au lieu de cela, et si vous n'êtes pas à l'aide de jQuery 1.7 ou au-dessus, l'utilisationdelegate
.