Comment forcer l'entrée pour autoriser seulement Alpha Letters?

En utilisant jQuery ici, mais incapable d'empêcher que les chiffres ne soient tapés dans le champ de saisie

Contribution

<input type="text" name="field" maxlength="8" title="Only Letters" value="Type Letters Only" onkeydown="return alphaOnly(event);" onblur="if (this.value == '') {this.value = 'Type Letters Only';}" onfocus="if (this.value == 'Type Letters Only') {this.value = '';}"/> 

JQuery

 function alphaOnly(event) { alert(event); var key; if (window.event) { key = window.event.key; } else if (e) { key = e.which; } //var key = window.event.key || event.key; alert(key.value); return ((key >= 65 && key <= 90) || (key >= 95 && key <= 122)); } 

J'ai vu de nombreux exemples ici sur la façon de restreindre uniquement les numéros et j'utilise les codes clés corrects pour az et AZ. Voyez-vous ce que je fais mal?

La propriété event.key m'a donné une valeur indéfinie. Au lieu de cela, j'ai utilisé event.keyCode :

 function alphaOnly(event) { var key = event.keyCode; return ((key >= 65 && key <= 90) || key == 8); }; 

Notez que la valeur de 8 est pour la touche arrière.

Sur les navigateurs les plus récents, vous pouvez utiliser:

 <input type="text" name="country_code" pattern="[A-Za-z]" title="Three letter country code"> 

Vous pouvez utiliser des expressions régulières pour restreindre les champs de saisie.

 <input type="text" name="field" maxlength="8" onkeypress="return onlyAlphabets(event,this);" /> function onlyAlphabets(e, t) { try { if (window.event) { var charCode = window.event.keyCode; } else if (e) { var charCode = e.which; } else { return true; } if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123)) return true; else return false; } catch (err) { alert(err.Description); } } 

Plutôt que de s'appuyer sur des codes clés, qui peuvent être assez encombrants, vous pouvez plutôt utiliser des expressions régulières. En changeant le modèle, nous pouvons facilement restreindre l'entrée en fonction de nos besoins. Notez que cela fonctionne avec l'événement de keypress et permettra l'utilisation de backspace (comme dans la réponse acceptée). Cela n'empêchera pas les utilisateurs de coller des caractères «illégaux».

 function testInput(event) { var value = String.fromCharCode(event.which); var pattern = new RegExp(/[a-zåäö ]/i); return pattern.test(value); } $('#my-field').bind('keypress', testInput); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <label> Test input: <input id="my-field" type="text"> </label>