de l'événement.mot de code ne retourne pas de valeurs correctes dans firefox
Je suis en train d'essayer le code suivant pour le déclenchement d'une méthode js quand space-bar
est enfoncée dans une zone de saisie.
<input id="j1" />
$('#j1').keypress (function (event){
alert(event.keycode)
});
Dans firefox, cette propriété renvoie la valeur correcte que lorsque enter
est enfoncée, les valeurs renvoyées pour les autres touches sont juste 0 à chaque fois. Dans IE/chrome cela fonctionne parfaitement.
Vous devez vous connecter pour publier un commentaire.
En non-IE navigateurs, vous voulez le
which
oucharCode
propriété dans unkeypress
événement plutôt que de lakeyCode
de la propriété. Lekeypress
événement est destiné à détecter les caractères tapés toutkeyup
etkeydown
sont pour detcting touches physiques (dans ces événements,keyCode
fonctionne dans tous les principaux navigateurs).Cependant, jQuery normalise la
which
propriété de événements de pression de touche à l'aide de code similaire à cela, dans jQuery, vous avez juste besoinPour (beaucoup) plus de détails sur les principaux événements, voir http://unixpapa.com/js/key.html.
Le problème n'est pas tous les navigateurs ont la même implémentations sur des combinaisons de touches. La solution serait de vérifier tous les endroits possibles où la
key
a été enregistré. Dans ce cas:event.keycode
etevent.which
Voir ce post pour plus d'infos
jQuery Événement Keypress: quelle touche a été pressée?
MODIFIER
Enfin creusé de mes anciennes fonctions, c'est le code que j'utilise:
enter
dans firefoxspacebar
keypress =)undefined
evt.which || evt.charCode || evt.keyCode || 0
- 50% moins d'espace||
ne doit pas nécessairement correspondre à une valeur Booléenne.a || b
évalue àa
sia
est truthy etb
autrement.charCode
à tous. Chaque navigateur qui prend en chargecharCode
prend également en chargewhich
, et certains (Opéra) uniquement en chargewhich
.SI "de l'événement.keyCode" ne retourne pas de valeurs propres puis pour firefox, vous pouvez utiliser le bouton " événement.charCode"
KeyboardEvent.code :
Donc, à partir de Firefox point de vue, il est retourné des valeurs correctes. Voir les docs.
keyCode
,which
,keyIdentifier
etcharCode
sont obsolèteskeyIdentifier
avait pas de soutien dans IE et Firefox et été supprimés à partir de Chrome et OperaAvec
charCode
comme Non-standardAlors, quelles sont les alternatives?
I. Utilisation de l'
key
propriété plutôtExemples :
"un", "Une", "@", "%", "$", "ا", "ب", "ة", "ت", ..., "١", "٢", "٣", "Tab", "Entrée" , tous les "F1"...`
Il a gagné le soutien de tous les principaux navigateurs (Firefox 52, Chrome 55, Safari 10.1, Opéra 46) à l'exception d'Internet Explorer 11, qui a
non-standard clé identificateurs et d'un comportement incorrect avec AltGraph. Plus d'infos
Si c'est important et/ou de compatibilité descendante, alors vous pouvez utiliser la fonctionnalité de détection comme dans le code suivant :
Avis que le
key
valeur est différente dekeyCode
ouwhich
propriétés : elle contient le nom de la clé pas de son code. Si votre programme a besoin des caractères de codes, vous pouvez faire usage decharCodeAt()
.Pour un seul des caractères imprimables que vous pouvez utiliser
charCodeAt()
, si vous avez à traiter avec des touches dont les valeurs contient plusieurs caractères comme ArrowUples chances sont : à tester pour les touches spéciales et de prendre des mesures en conséquence. Essayez donc de mettre en œuvre un tableau de clés et les valeurs qui leur correspondent
codes
charCodeArr["ArrowUp"]=38
,charCodeArr["Enter"]=13
,charCodeArr[Escape]=27
... et ainsi de suite, veuillez jeter un oeil à Valeurs De Clé et leur codes correspondantsII.Vous pouvez également utiliser le
code
propriété :Il a un effet similaire à la
key
de la propriété et une sortie comme"keyW"
pour la touche W enfoncée d'un clavier QUERTY avecde mise en page. Si le même bouton a été pressé dans un autre modèle (AZERTY) ou une autre langue (l'hébreu) ou en combinaison avec un modificateur
(maj),
key
propriété de modifier en conséquence, si lacode
propriété aurait toujours la même valeur"keyW"
en savoir plus sur cette ici.
La
code
propriété est prise en charge dans Chrome 49, Firefox 52, Safari 10.1 et de l'Opéra de 46 Mais pas dans Internet Explorer.voir aussi :
si vous obtenez un
0
n'importe quelle touche vous appuyez sur, essayez d'utilisercharCode
au lieu dekeyCode
Cela se produit parce que vous êtes à l'appel de la KeyboardEvent objet qui utilise
which
etcharCode
par opposition à l'objet de l'Événement qui utilisekeyCode
pour revenir au clavier des valeurs Unicode. Pour plus d'informations, reportez-vous à la MDN web docs pour plus d'informations concernant les KeyboardEvent:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent