page-translate

Valider un code postal français en Javascript

code postal / formulaire / France / HTML / Javascript / script / Web

Important: Nous venons de migrer d'un site Wordpress vers Drupal alors il se peut qu'il y ait des liens brisés, des images qui ne s'affichent pas ou encore du code mal formatté. Nous travaillons fort pour régler ces problèmes le plus tôt possible.

Plus tôt cette année, j'ai écrit un billet qui expliquait comment valider un code postal canadien en Javascript.

Depuis, j'ai reçu quelques commentaires de gens qui se demandaient comment modifier cette fonction Javascript pour valider un code postal français.

Règles du code postal français

Les codes postaux, en France, sont composés d'exactement 5 chiffres et aucune lettres. Les 2 premiers chiffres servent à désigner le département, et les 3 derniers désignent chaque bureau de poste distributeur au sein de ce département. Par exemple, le code postal français (probablement) le plus utilisé est :

75000

Nous n'irons pas jusqu'à valider chaque département, alors disons nous validerons les 2 premiers chiffres pour des valeurs de 1 à 99. Les 3 derniers chiffres, eux, peuvent varier de 000 à 999 car le 901 est utilisé pour l'île de Clipperton, qui est une propriété de l'État français.

1. Valider le nombre de caractères

Une fois que l'utilisateur entre son code postal, vous devez appeler la fonction Javascript function CodePostalValide(id) où le paramètre id est le code postal entré.

Pour commencer, nous validons le nombre de chiffres. S'il n'a pas

// il faut que l'id du champ code postal soit "id"
// ex: <input type="text" id="id" name="codepostal">
entree=document.getElementById(id).value;
longueur=entree.length;
if(longueur!==5) {
alert('Le code postal est invalide');
return false;
}
2. Valider le type de caractères

Afin de valider que le code postal entré ne comporte que des chiffres, nous assignerons toutes les possibilités de chiffres possibles à une variable. Les chiffres possibles sont de 0 à 9, alors cela se traduit à :

// la variable 'chiffres' est égale à tous les chiffres acceptés
// dans le code postal
chiffres='0123456789';

Une fois la variable déclarée, nous comparons, un caractère à la fois, à la chaîne de chiffres permise. Si l'un de ses caractères n'est pas un chiffre, il y aura une alerte et la fonction retournera 'false' :

// compare le input "id" à la chaîne de caractères permise
if(chiffres.indexOf(entree.charAt(0))<0){
alert('Le code postal est invalide');
return false;
}
if(chiffres.indexOf(entree.charAt(1))<0){
alert('Le code postal est invalide');
return false;
}
if(chiffres.indexOf(entree.charAt(2))<0){
alert('Le code postal est invalide');
return false;
}
if(chiffres.indexOf(entree.charAt(3))<0){
alert('Le code postal est invalide');
return false;
}
if(chiffres.indexOf(entree.charAt(4))<0){
alert('Le code postal est invalide');
return false;
}

// tout est OK !
alert('Le code postal est valide');
return true;

En résumé

Voici le code Javascript complet pour valider un code postal français :

// il faut que l'id du champ code postal soit "id"
// ex: <input type="text" id="id" name="codepostal">
entree=document.getElementById(id).value;
longueur=entree.length;
if(longueur!==5) {
alert('Le code postal est invalide');
return false;
}
// la variable 'chiffres' est égale à tous les chiffres acceptés
// dans le code postal
chiffres='0123456789';

// compare le input "id" à la chaîne de caractères permise
if(chiffres.indexOf(entree.charAt(0))<0){
alert('Le code postal est invalide');
return false;
}
if(chiffres.indexOf(entree.charAt(1))<0){
alert('Le code postal est invalide');
return false;
}
if(chiffres.indexOf(entree.charAt(2))<0){
alert('Le code postal est invalide');
return false;
}
if(chiffres.indexOf(entree.charAt(3))<0){
alert('Le code postal est invalide');
return false;
}
if(chiffres.indexOf(entree.charAt(4))<0){
alert('Le code postal est invalide');
return false;
}

// tout est OK !
alert('Le code postal est valide');
return true;

Commentaires

Es ce que, si un pays étranger qui a des lettres dans son code postaux sera t'il bloqué? Si oui! Il faudrait que ce script fonctionne que pour la France métropolitaine Et encore merci pour ce script
Salut Alex, Le script est fait pour la France Métropolitaine. Le script n'accepte que 5 chiffres, pas plus et pas de lettres. Au plaisir !
Je venais vérifier les règles pour un code postal français, mais du coup j'en profite : les expressions régulières, c'est quand même moins fastidieux : entree=document.getElementById(id).value; if (entree.match(/^[0-9]{5}$/)){ alert('Le code postal est valide'); return true; } else { alert('Le code postal est invalide'); return false; }
Salut G, ouais tu as raison, c'est que ce script est dérivé d'un autre <a href="1821-valider-un-code-postal-francais-en-javascript/376-validation-dun-code-postal-en-javascript" rel="nofollow">script pour les codes postaux canadiens</a>. Et puisque, pour ces codes postaux, la séquence est important (une lettre, puis un chiffre, puis une lettre ...) le script vérifie un caractère à la fois.
Bonjour Désolé! mais j'ai relancé plusieurs fois sur le forum de Joomla amis sans réponse!! Savez vous à quel endroit faut mettre ce script Dans Virtuemart 1.1.4 Dans le Composant d'inscription J'ai bien des modif pour la page Inscription pour autre chose dans administrator\components\com_virtuemart\classesps_userfield.php Mais là, je ne vois pas! Je ne suis qu'un novice! Alex
Pourquoi ne pas faire : if(isNaN(CODEPOSTAL)){ return false; } else{ return true; } pour valider que la chaine ne contien que des chiffres ?

Ajouter un commentaire

CAPTCHA
Êtes-vous un robot ?
Image CAPTCHA
Écrivez le code apparaissant dans l'image.

Derniers articles