Je ne veux pas l'utilisateur pour permettre le collage de tous les caractères non alphanumériques sur une zone de texte. Comment puis-je limiter cela en Javascript? Merci!Ne laissez pas coller des caractères non alphanumériques
Répondre
Vous pouvez utiliser l'événement onblur
de zone de texte.
function remove()
{
var otxt=document.getElementById('txt1');
var val=otxt.value;
for(i=0;i<val.length;i++)
{
var code=val.charCodeAt(i);
if(!(code>=65 && code<=91) && !(code >=97 && code<=121) && !(code>=48 && code<=57))
{ otxt.value=""; return ; }
}
}
<input type="text" id="txt1" onblur="remove();" />
Il supprimera toute valeur de la zone de texte lorsque vous saisissez une valeur non alphanumérique.
Je pense que ONBlur est seulement pour IE. Comment faire pour que cette fonction fonctionne pour plusieurs navigateurs? – user228777
@ user228777: en utilisant une librairie comme prototype ou jQuery, vous pouvez 'observer 'l'événement' blur', cela fonctionnera dans plusieurs navigateurs. – Josh
@ user228777 'onblur' est standard. Et pourquoi tu ne l'essaies pas ?! Il est assez ridicule pour vous de venir ici pour obtenir de l'aide, puis d'ignorer les bonnes suggestions basées sur des hypothèses incorrectes. –
Je ne sais pas comment vous pouvez empêcher le collage, mais vous pouvez filtrer le contenu soit sur le soumettre ou sur l'événement de changement.
Si l'utilisateur colle des caractères non valides, puis-je définir la valeur de la zone de texte = "" lors d'un événement de modification? comment ferais-je cela? – user228777
Il est préférable de valider le formulaire - vérifiez le plugin de ce grand jQuery - http://docs.jquery.com/Plugins/Validation/ et vous pouvez utiliser la règle du "nombre": http://docs.jquery.com/Plugins/Validation/Methods/number. Vraiment simple et facile à régler!
Rappelez-vous: vous ne devriez considérer le plugin de validation jQuery que comme une optimisation des performances. Il peut fournir un retour d'informations plus rapide pour l'utilisateur et éviter d'envoyer de mauvaises requêtes à votre serveur, mais c'est finalement à votre serveur de valider les données. –
En utilisant jQuery, c'est une façon de le faire:
HTML:
<form name='theform' id='theform' action=''>
<textarea id='nonumbers' cols='60' rows='10'> </textarea>
</form>
JavaScript:
$().ready(function(){
$("textarea#nonumbers").keyup(removeextra).blur(removeextra);
});
function removeextra() {
var initVal = $(this).val();
outputVal = initVal.replace(/[^0-9a-zA-Z]/g,"");
if (initVal != outputVal) {
$(this).val(outputVal);
}
};
EDIT: Comme le fait remarquer dans les commentaires, l'original (en utilisant l'événement .keyup()) aurait laissé ouverte la possibilité de coller via le menu contextuel de la souris, j'ai donc ajouté un événement .blur(). .change() aurait été possible aussi, mais il y a des rapports de bugginess. Une autre option utilise .focusout(). Le temps d'expérimenter ...
Désolé, Jquery n'est pas l'option pour moi. Le patron ne veut pas utiliser Jquery. Je fais la validation côté serveur avec le validateur .net personnalisé. Mais j'essayais de le restreindre en utilisant javascript. – user228777
Eh bien, il n'est pas difficile de réécrire sans les fonctions de la bibliothèque, mais vous devrez faire vos propres tests et effectuer le nettoyage de votre navigateur. Mais ayant besoin de demander, est-ce censé fonctionner quelque part qui n'a pas accès au Web? Parce qu'avec Google et d'autres (je pense) l'hébergeant, il n'est pas nécessaire de l'héberger sur ses propres machines après tout. – chryss
@ user228777 - jQuery n'est pas une option, mais vous avez * tagué * la question avec 'jquery'!? –
En supposant:
<textarea id="t1"/>
Vous pouvez modifier le gestionnaire d'événements onchange
pour le textarea de dépouiller quoi que ce soit non alphanumérique:
document.getElementById('t1').onchange = function() {
this.value = this.value.replace(/\W/,'');
}
Pourquoi ne l'a suggéré d'utiliser OnPaste
événement? Cela est entièrement pris en charge dans IE, Safari et Chrome.
Docs for using OnPaste in Webkit
En JQuery, qui ressemblerait à ceci:
$(input).bind("paste", function(e){ RemoveNonAlphaNumeric(); })
qui couvre 75% du marché des navigateurs.
Si vous utilisez JQuery, onpaste est normalisé automatiquement dans Firefox pour que cela fonctionne aussi. Si vous ne pouvez pas utiliser JQuery, un événement OnInput
fonctionne.
La solution de travail est d'utiliser une valeur setTimeout rapide pour permettre à remplir la propriété de la valeur de l'entrée.
Fondamentalement comme ceci:
$("input").bind("paste", function(e){RemoveAlphaChars(this, e);});
function RemoveAlphaChars(txt, e)
{
setTimeout(function()
{
var initVal = $(txt).val();
outputVal = initVal.replace(/[^0-9]/g,"");
if (initVal != outputVal)
$(txt).val(outputVal);
},1);
}
J'ai testé dans IE, Chrome et Firefox et il fonctionne bien. Le délai d'expiration est si rapide que vous ne pouvez même pas voir les caractères supprimés.
- 1. supprimer les caractères non alphanumériques, sauf espace
- 2. Suppression de caractères non alphanumériques d'une chaîne
- 3. T-SQL trim & nbsp (et autres caractères non alphanumériques)
- 4. URL Encoder tous les caractères non alphanumériques en C#
- 5. Expression régulière pour rejeter les caractères non-alphanumériques
- 6. Validateur d'expressions régulières pour intercepter les caractères non alphanumériques
- 7. RegEx (en JavaScript find/remplacer) - correspondent à des caractères non-alphanumériques, mais ignorer - et +
- 8. Bash: textfile Divisé en mots avec des caractères non alphanumériques comme délimiteurs
- 9. SELECT uniquement les lignes qui ne contiennent que des caractères alphanumériques dans MySQL
- 10. Comment savoir si une chaîne contient des caractères non alphanumériques en C#/.NET 2.0?
- 11. Comment faire pour supprimer tous les caractères non-alphanumériques et non-espace d'une chaîne en PHP?
- 12. Autoriser les caractères alphanumériques, la ponctuation et les espaces
- 13. Reg exp voulait pour remplacer tous les caractères non-alphanumériques avec underscores
- 14. Comment désactiver les caractères alpha, alphanumériques et spéciaux dans UITextField?
- 15. CSS/HTML: Empêcher que la chaîne de caractères non alphanumériques ne soit scindée par un retour automatique à la ligne?
- 16. L'appel ajax JQuery ne prend pas de paramètres alphanumériques!
- 17. La regex Python pour alphanumériques ne fonctionne pas
- 18. caractères alphanumériques à partir du fichier csv en C#
- 19. Expression de calcul n'exécute laissez pas
- 20. regex caractère alpha correspondant suivi de 4 caractères alphanumériques
- 21. l'encodage des caractères non anglais
- 22. Vérifiez mot de passe contient caractères alphanumériques et spéciaux
- 23. Expressions Regex pour tous les symboles non alphanumériques
- 24. Copier/Coller ne fonctionne pas dans Modal fenêtre
- 25. expressions régulières pour supprimer tous les caractères sauf les caractères alphanumériques et certains signes de ponctuation
- 26. OutgoingWebResponseContext n'affiche pas les caractères non anglais
- 27. Analyse des caractères numériques non-alpha de l'objet SQLCHAR
- 28. ne peut pas analyser et afficher des caractères non-UTF8 lecture d'une requête http
- 29. Ne laissez pas excel ouvrir le fichier si elle est déjà ouvert
- 30. L'expression régulière ne fonctionne pas
Peu importe ce que vous essayez de restreindre avec Javascript, je peux facilement le contourner. Vous aurez besoin d'une validation côté serveur, quoi qu'il arrive. –
Pour les champs tels que les numéros de téléphone, les numéros de cartes de crédit, etc. Je vous recommande de laisser l'utilisateur entrer ce qu'il veut et d'effacer ensuite les caractères non alphanumériques sur le serveur. Vous pourriez alors vouloir stocker les deux versions, ainsi l'original peut être montré à l'utilisateur plus tard, et la version dépouillée est indexée, envoyée aux API, etc. Rien n'est plus ennuyant qu'un formulaire qui impose un format inutile. – devstuff