12
votes

Faites une alerte sur les clés que si la clé est une lettre ou un numéro

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. xxx

ou pour n'importe quelle touche sauf pour l'onglet , Shift, Ctrl, Entrez

Tout le monde sait comment?


0 commentaires

7 Réponses :


36
votes

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');
       }
});


2 commentaires

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



1
votes
<input id="textbox" type='text' id='hi />

$("#textbox").keypress(function (e){
    if (e.which <= 90 && e.which >= 48)
       {
          alert('Letter or number click');
       }
});

0 commentaires

15
votes

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);
    }
});


2 commentaires

Pourquoi l'événement KeyPress est-il plus fiable?


@Kumar: Parce que keyup et clé est concerné par quelle clé physique a été enfoncée pendant que keypress est concerné par l'entrée textuelle résultant de la touche de frappe.



0
votes
<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");
   }
 }

0 commentaires

5
votes

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
   }
 });


0 commentaires

2
votes

C'est ce que l'événement OnKeyPress est destiné, il ne tire que si vous appuyez sur une touche produisant une valeur. MDN Docs .


0 commentaires

1
votes

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>


2 commentaires

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.