javascript onchange vs onkeyup événements pour <Select> menu (en Haut et en Bas les touches de ne pas tirer de l'événement onchange dans Firefox)
J'ai un <select id="myselect" name="myselect" onChange="(myfunction();)">...</select>
qui fonctionne parfaitement sous IE et Opera. Le mot "parfait" signifie que l'événement déclenché lorsque vous modifiez les valeurs dans la liste déroulante par la souris ou par tout "Up", "Down", "page précédente"(pas pour l'Opéra), "PageDown"(pas pour l'Opéra), "Home" et "End" les touches lorsque vous sélectionnez le menu est actif (en bleu). Le problème apparaît lorsque vous le tester à l'aide de Firefox 3.6.Xv. Rien ne se produit lorsque vous utilisez le "Haut" et "Bas", mais pour la souris, elle fonctionne toujours.
Ne vous recommandons d'utiliser onkeyup événement? Je l'ai essayé, il "attrape" en haut et en bas, mais, c'est à dire semble avoir deux onChange et onkeyup événement. Mais j'ai juste besoin d'un événement.
Comment résoudre ce problème?
Merci.
- Firefox déclenche le changement de l'événement lorsque le dom élément perd le focus et la valeur a changé.
Vous devez vous connecter pour publier un commentaire.
Je vous recommande de continuer à utiliser le
change
événement. Le Firefox de la mise en œuvre fait beaucoup de sens pour les utilisateurs du clavier. Si vous avez un onglet à l'select
élément et choisissez une option à l'aide des touches Haut et Bas (et vous devez appuyer sur eux beaucoup pour une longue liste) vous ne voulez pas déclencher des tonnes d'actions sur la page web. Il est ok pour que l'action exécutée une fois que vous avez sélectionné la bonne entrée et passé à autre chose.C'est un assez sale hack, mais vous pouvez forcer le le
change
cas d'incendie en faisant ceci:Donc, si vous voulez enregistrer un écouteur d'événement pour
change
ainsi, et que la fonction est appelée lorsque l'utilisateur appuie sur une touche sur le<select>
via le code ci-dessus.Vous souhaitez peut-être portée uniquement pour Firefox, mais autant que je sache, vous auriez à utiliser UA renifler pour que donc c'est à vous si c'est acceptable.
Source
Vous pourriez être intelligent et faire votre propre gestionnaire pour l'événement keyup qui teste le mot de code pour voir si c'était une flèche vers le haut ou flèche vers le bas, et les feux de l'événement change en conséquence.
Mon propre js n'est pas assez bon pour vous écrire un exemple, mais je pourrais montrer quelques exemples de jQuery pour faire ça: