Quel serait le moyen le plus simple d'autoriser uniquement les lettres/chiffres dans une zone de texte? Nous utilisons JS/jQuery, mais ne voulons pas utiliser un plugin de validation?jquery/JS autorise uniquement les chiffres et les lettres dans un champ de texte
Répondre
Vous pouvez utiliser une expression régulière simple sur le formulaire submit pour évaluer le contenu de la zone de texte, afficher une erreur et arrêter l'envoi du formulaire. Faites une fonction hors de la vérification et vous pouvez également l'appliquer lorsque la zone de texte perd le focus. Faites-le très souvent et vous constaterez que vous avez réimplémenté le plugin de validation.
$(function() {
$('form').submit(function() {
return validateTB($('#textbox'), true, $('#textboxError'));
});
$('#textbox').blur(function() {
validateTB($(this), true, $('#textboxError'));
});
function validateTB(tb,required,msg) {
var $tb = $(tb);
var re = '/^[a-z0-9]';
if (required) {
re += '+';
}
else {
re += '*';
}
re += '$/';
if ($tb.val().match(re) == null) {
$(msg).show();
return false;
}
$(msg).hide();
return true;
}
});
Si vous ne voulez pas utiliser de plugins - Qu'en est-il de la simple validation JS?
Je posté à ce sujet sur mon blog il y a un moment ->http://dotnetbutchering.blogspot.com/2009/04/definitive-javascript-validation-with.html
Vous verrez que la fonction dans ma solution proposée prend un champ d'entrée ID et une expression rationnelle (et vous devrez venir avec un regEx pour vos besoins de validation, devrait être assez trivial si vous voulez seulement aplhanumeric) et met l'arrière-plan du contrôle au vert ou au rouge en fonction du résultat de la validation. Je sais que ce n'est pas parfait, mais je pense que c'est suffisant pour démarrer, et vous pouvez l'utiliser comme point de départ pour lancer le vôtre. Je suis sûr qu'il existe des solutions élégantes avec JQuery ou JS, mais quelque chose dans ce sens a fonctionné très bien pour moi jusqu'à présent.
Espérons que ça aide.
Ma solution était la suivante:
jQuery('input[type="text"]').keyup(function() {
var raw_text = jQuery(this).val();
var return_text = raw_text.replace(/[^a-zA-Z0-9 _]/g,'');
jQuery(this).val(return_text);
});
Chaque fois qu'un utilisateur essaie d'entrer dans autre chose qu'un chiffre, la lettre, l'espace ou la fonction retourne en évidence une chaîne avec les caractères bagués supprimés.
fonctionne parfaitement :) Ce que je pense est une meilleure approche, car il empêche déjà utilisateur d'entrer invalide personnages. :) Comment puis-je faire la même chose lorsque l'utilisateur appuie sur le bouton Envoyer pour empêcher toute soumission s'il n'y a pas d'entrée dans la zone de texte? – Si8
Mon approche n'était pas la plus sûre mais j'utilisais jQuery pour cacher le bouton de soumission jusqu'à ce que les données soient correctes. L'inconvénient est qu'un utilisateur pourrait montrer le bouton en utilisant un débogueur. Donc, un coffre-fort était d'ajouter des vérifications après la soumission pour s'assurer que les données étaient correctes. Puis notifier l'utilisateur de leurs erreurs. – Ian
Depuis l'extrait de tvanfossen déclenche uniquement sur soumettre et de Ian est pas aussi joli que ce pourrait être, je veux juste ajouter une approche plus propre:
HTML:
<input id="myinput" type="text">
JS (jquery):
$('#myinput').keypress(function (e) {
var regex = new RegExp("^[a-zA-Z0-9]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}
e.preventDefault();
return false;
});
je trouve le problème dans cette méthode quand je copie et colle ces charte en entrée déposée '# $%^& *()' il ne bloque pas ces charte –
Ceci est une solution simple qui va vérifier l'entrée sur keyup et supprimer les caractères indésirables comme les types d'utilisateurs:
<input class="usr" type="text id="whatever" name="whatever" />
$(".usr").keyup(function() {
var n = $(this).val();
if (n.match("^[a-zA-Z0-9 ]*$") == null) {
$(this).val(n.slice(0,-1));
}
});
La regex peut être modifiée pour s'adapter aux spécifications.
Une variante sur la réponse de Ian est un peu plus léger et plus court:
function onlyAllowAlphanumeric() {
this.value = this.value.replace(/[^a-zA-Z0-9 _]/g, '');
});
$('input[type="text"]').keyup(onlyAllowAlphanumeric);
- 1. Autoriser uniquement les lettres; pas de ponctuation pas de chiffres
- 2. Vérifiez si le texte saisi utilise uniquement les lettres anglaises
- 3. compter les lettres dans un fichier texte
- 4. Django RegexField Lettres et chiffres seulement
- 5. Restreindre les caractères entrés dans un champ de texte
- 6. Autoriser la zone de texte uniquement pour les lettres utilisant jQuery?
- 7. Afficher uniquement les numéros dans une zone de texte
- 8. Validation de l'entrée - Chiffres et lettres
- 9. C# Expression régulière pour faire correspondre les lettres, les chiffres et les traits de soulignement
- 10. regex autorise uniquement les nombres ou les chaînes vides
- 11. Majuscules toutes les lettres dans un champ de texte en Java
- 12. ctype_alpha mais autorise les espaces (php)
- 13. permettent chiffres uniquement pour les entrées
- 14. Comment supprimer tous les caractères sauf les chiffres, les lettres, les guillemets et les deux-points/points-virgules?
- 15. lettres ou chiffres uniquement dans un mot de passe avec jquery
- 16. Comment autoriser uniquement les lettres dans une zone de texte dans une application Windows Forms?
- 17. Autorise uniquement l'orientation LeftLandscape et RightLandscape
- 18. Jquery Tablesorter: trier les chiffres au-dessus des lettres
- 19. ORDER BY lettres et non les numéros d'un champ
- 20. Bibliothèque ou code pour convertir les chiffres en lettres
- 21. Comment séparer les lettres et les chiffres d'une chaîne en php
- 22. Incrémentation automatique avec une chaîne de chiffres et de lettres
- 23. Les lettres grecques dans le texte de la bande ggplot
- 24. simple pour les lettres Regex majuscules et minuscules, des chiffres et quelques symboles
- 25. Permutation de lettres et de chiffres dans un numéro de téléphone
- 26. Regex pour vérifier uniquement les lettres majuscules, deux caractères spéciaux (& et Ñ) & sans espace entre
- 27. SML et les chiffres église
- 28. jquery validation seulement les chiffres
- 29. Autoriser uniquement les entrées numériques dans WPF Zone de texte
- 30. IIS7 autorise l'accès uniquement au réseau local
+1 -> Nice extrait – JohnIdol