Voila un petit snippet pour supprimer lors de la saisie tous les caractères qui ne sont pas alphanumériques (a l’exception des caractères – et _ )
Cette fonction est pratique pour générer des noms sécurisés pour les url, les chemin systèmes etc…
La fonction utilisable avec JQuery
function shortName(element){ $(element).val($(element).val().replace(/([^a-z0-9\-_])/gi,'')); }
La même fonction en javascript natif
function shortName(element){ element.value = element.value.replace(/([^a-z0-9\-_])/gi,''); }
Exemple d’utilisation
<script type="text/javascript"> function shortName(element){ element.value = element.value.replace(/([^a-z0-9\-_])/gi,''); } </script> <!-- dans ce champs, essayez de taper !:;,-*=+°à / ... --> <input type="text" onkeyup="shortName(this);" name="nomSimple" />
Edit : De Boudah Talenka : On peut encore simplifier l’expression avec
function shortName(e){ e.value = e.value.replace(/([^\w\-])/g,''); }
Mieux vaut utiliser l’attribut ‘pattern’ de input, non ? Ça enlève toute dépendance à JS
Le principe est de pouvoir faire ça en js et non via HTML5 (qui n’est pas encore super bien intégré a tous les navigateurs), mon exemple s’applique a un input mais il pourrait tout aussi bien s’appliquer à une chaîne vacante, a un paramètre d’url etc.. :), après adapter l’expression à un pattern html5 au besoin ne necessite q’un vague copier coller 😀
On peut encore simplifier ton expression régulière :
function shortName(e){ e.value = e.value.replace(/([^\w\-])/g,''); }
C’est édité, merci 🙂