J'aimerais afficher une alerte sur l'événement de porte-clés, mais uniquement si la clé était une lettre ou un numéro, pas pour le déplacement, l'onglet, etc. ou pour n'importe quelle touche sauf pour l'onglet , Shift, Ctrl, Entrez P> Tout le monde sait comment? P> P>
7 Réponses :
Vous devrez joindre un événement "Keyup" à la zone de texte et à l'intérieur de la vérification de l'événement pour le keycodes souhaité:
$("#hi").bind("keyup", function(e) { //on letter number if (e.which <= 90 && e.which >= 48) { alert('hello'); } });
Ne fonctionne pas lorsque vous utilisez des chiffres de votre clavier. JavasCriper.net/faq/keycodes.htm
Cela fonctionnera uniquement pour les lettres anglaises, il y a une gamme supplémentaire pour chaque langue ... jrgraphix.net/research/ Unicode_BlockS.php
<input id="textbox" type='text' id='hi /> $("#textbox").keypress(function (e){ if (e.which <= 90 && e.which >= 48) { alert('Letter or number click'); } });
Si vous souhaitez vérifier quel caractère a été saisi, keyup code> est le mauvais événement. Seule l'événement
KeyPress CODE> peut vous dire de manière fiable quelque chose sur le personnage saisi. Vous pouvez le faire comme suit:
$("#hi").keypress(function(e) {
var charTyped = String.fromCharCode(e.which);
if (/[a-z\d]/i.test(charTyped)) {
alert("Letter or number typed: " + charTyped);
}
});
Pourquoi l'événement KeyPress est-il plus fiable?
@Kumar: Parce que keyup code> et
clé code> est concerné par quelle clé physique a été enfoncée pendant que
keypress code> est concerné par l'entrée textuelle résultant de la touche de frappe.
<input type="text" id="hi" onkeypress="keyPress()" /> function keyPress(e){ var key, x = e || window.event; key = (x.keyCode || x.which); if(key <= 90 && key >= 48){ alert("Key pressed"); } }
Ce code ajouté représente des chiffres, des caractères et des chiffres de Numpad:
document.querySelector(selector).addEventListener('keypress', function() { if (e.which <= 90 && e.which >= 48 || e.which >= 96 && e.which <= 105) { alert('keycode ' + e.which + ' triggered this event'); //do whatever } });
C'est ce que l'événement OnKeyPress code> est destiné, il ne tire que si vous appuyez sur une touche produisant une valeur. MDN Docs . P>
Je n'ai jamais aimé la validation du code clé. Mon approche était de voir si l'entrée a du texte (n'importe quel caractère), confirmant que l'utilisateur entrave du texte et aucun autre caractères.
p>
<html lang="en"> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> </head> <body> <input type="text" name="input" id="input"> </body> </html>
C'est une bonne approche, mais dans certains cas, cela peut arriver que l'événement ne se déclenche pas sur la copie et la pâte. Par exemple, en utilisant "Test" et que la pâte "FOO1" ne déclenche pas l'événement, car "Test" et "FOO1" ont la même longueur.
En outre, utilisez simplement les mots elles-mêmes pour la longueur des mots pour vérifier, si le changement d'entrée. Dans ce cas, la copie et la pâte devraient aussi fonctionner.