Fonctions et variables de base

Ces quelques fonctions et variables représentent quelques outils qui reviennent souvent lors de la vérification d'un formulaire. Elles peuvent être réutilisées telles quelles car les variables utilisées sont indépendantes des noms de zones de saisie utilisés dans les formulaires.

Les fonctions is...()

Ces fonctions auront pour but d'effectuer un test élémentaire défini et de retourner une valeur 'true' ou 'false'.

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste si le caractère passé en paramètre (c) est un caractère autorisé (liste en paramètre)
function isCharInList(c,list) {
	var c,list;
	if (list.indexOf(c.toLowerCase()) < 0) { return false; } else { return true; }
}
Cette fonction teste si le caractère 'c' passé en premier argument de la fonction se trouve dans la liste 'list' des caractères autorisés (passée en second argument). La liste est une liste de caractères en minuscules et le caractère à tester est converti en minuscules pour pouvoir être comparé à des minuscules.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste si tous les caractères de la chaine passée en paramètre (str) sont autorisés
// Fonction dépendante de isCharInList()
function isStringInList(str,list) {
	var str,list,n;
	for (n=0; n<str.length; n++) {
		if (!isCharInList(str.substring(n,n+1),list)) { return false; }
	}
	return true;
}
Cette fonction vérifie un à un si tous les caractères contenus dans la chaîne de caractères 'str' passée en premier argument font partie des caractères autorisés et contenus dans la liste 'list' passée en second argument de la fonction. Elle utilise la fonction isCharInList()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste si les caractères passés en paramètre correspondent à un TDL valide
function isTLD(tld) {
	var tld,domains;
	domains = "com|net|int|org|edu|mil|gov|af|al|dz|as|ad|ao|ai|aq|ag|ar|am|aw|ac|au|at|"
		+ "az|bh|bd|bb|by|be|bz|bj|bm|bt|bo|ba|bw|bv|br|io|bn|bg|bf|bi|gg|je|kh|cm|ca|"
		+ "cv|ky|td|cl|cn|cx|cc|co|km|cg|ck|cr|ci|hr|cf|cu|cy|cz|dk|dj|dm|do|tp|ec|eg|"
		+ "sv|gq|er|ee|et|fk|fo|fj|fi|gf|pf|tf|fr|fx|ga|gm|ge|de|gh|gi|gr|gl|gd|gp|gu|"
		+ "gt|gn|gw|gy|ht|hm|hn|hk|hu|is|in|id|ir|iq|ie|im|il|it|jm|jp|jo|kz|ke|ki|kp|"
		+ "kr|kw|kg|la|lv|lb|ls|lr|ly|li|lt|lu|mo|mk|mg|mw|my|mv|ml|mt|mh|mq|mr|mu|yt|"
		+ "mx|fm|md|mc|mn|ms|ma|mz|mm|mp|na|nr|np|an|nl|nc|nz|ni|ne|ng|nu|nf|no|om|pk|"
		+ "pw|pa|pg|py|pe|ph|pn|pl|pt|pr|qa|re|ro|ru|rw|gs|lc|ws|sm|st|sa|sn|sc|sl|sg|"
		+ "sk|si|sb|so|za|es|lk|sh|kn|pm|vc|sd|sr|sj|sz|se|ch|sy|tw|tj|tz|th|bs|tg|tk|"
		+ "to|tt|tn|tr|tm|tc|tv|um|ug|ua|uk|us|uy|ae|uz|vu|va|ve|vn|vg|vi|wf|eh|ye|yu|"
		+ "zr|zm|zw|eu|"
		+ "biz|info|aero";
	if (domains.indexOf(tld.toLowerCase()) < 0) { return false; } else { return true; }
}
Cette fonction vérifie si la chaîne de caractères 'tld' fait partie des TLD (Top Level Domain) officiels. Si de nouveaux domaines Internet sont créés, il est possible de corriger la liste en ajoutant les nouveaux domaines à accepter selon le format utilisé en les séparant par le caractère |
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste le format d'une adresse email.
// Fonction dépendante de isTLD()
// Login non nul, doit contenir "@" dans l'adresse, un point dans le domaine et un TLD valide
function isEmail(address) {
	var address,parts,domains;
	if (address.indexOf("@") <= 0)         { return false; }
	parts = address.split("@");
	if (parts[0].length == 0)              { return false; }
	if (parts[1].indexOf(".") <= 0)        { return false; }
	domains = parts[1].split(".");
	if (!isTLD(domains[domains.length-1])) { return false; }
	return true;
}
Cette fonction vérifie si l'adresse mail passée en argument possède un format autorisé : login non nul, il doit y avoir le caractère '@' ainsi qu'un TLD valide précédé par un point. Elle pourra être utilisée conjointement avec la fonction IsStringInList() pour vérifier que les caractères de cette adresse sont autorisés. Elle utilise la fonction isTLD()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste le format d'une date (JJ/MM/AAAA ou MM/JJ/AAAA).
function isDate(date) {
	var date, reg = new RegExp("^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$","g");
	if(reg.test(date)) { return true; } else { return false; }
}
Cette fonction vérifie si la chaine de caractère 'date' passée en argument contient bien deux chiffres, un slash, deux chiffres, un slash et quatre chiffres. La validité de la date sera testée avec une autre fonction : isValidDate().
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste le format d'une heure (HH:MM).
function isHour(heure) {
	var tab, reg = new RegExp("^[0-9]{2}[:]{1}[0-9]{2}$","g");
	if(reg.test(heure)) { return true; } else { return false; }
}

Cette fonction verifie si une chaine de caractères 'heure' au format HH:MM passée en argument contient bien deux chiffres, le caractère deux-points suivi de deux chiffres. La validité de l'heure sera testée avec une autre fonction isValidHour().

Si vous avez besoin de tester une heure au format HH:MM:SS, vous pouvez changer l'expression régulière avec l'expression régulière suivante : "^[0-9]{2}[:]{1}[0-9]{2}[:]{1}[0-9]{2}$" c'est à dire 2 chiffres de 0 à 9, 1 fois le caractère :, 2 chiffres de 0 à 9, 1 fois le caractère : et 2 chiffres de 0 à 9.

Les fonctions isValid...()

Ces fonctions auront pour but d'effectuer un test et de retourner la chaîne de caractères "OK" si la validité est vérifiée ou le message d'erreur à afficher dans le cas contraire.

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste la validité d'une date française (JJ/MM/AAAA).
// Fonction dépendante de isDate()
function isValidDate(date) {
	var date,tab;
	if(isDate(date)) {
		tab=date.split('/');
		if((tab[0]*1)<1 || (tab[0]*1)>31) { return "Jour incorrect"; }
		if((tab[1]*1)<1 || (tab[1]*1)>12) { return "Mois incorrect"; }
		if((tab[2]*1)<1) { return "Année incorrecte"; }
		return "OK";
	}
	return "Format date incorrect";
}
Cette fonction vérifie la validité d'une date : le jour compris entre 1 et 31, le mois compris entre 1 et 12 et l'année positive. Elle utilise la fonction isDate()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste la validité d'une heure (HH:MM).
// Fonction dépendante de isHour()
function isValidHour(heure) {
	var heure, tab;
	if(isHour(heure)) {
		tab=heure.split(':');
		if((tab[0]*1)<0   || (tab[0]*1)>24) { return "Heure incorrecte";    }
		if((tab[1]*1)<0   || (tab[1]*1)>60) { return "Minutes incorrectes"; }
		if((tab[1]*1)==24 || (tab[1]*1)!=0) { return "Minutes incorrectes"; }
		return "OK";
	}
	return "Format heure incorrecte";
}
Cette fonction vérifie que l'heure donnée au format HH:MM ait les heures comprises entre 0 et 24 et les minutes entre 0 et 60. Elle utilise la fonction isHour()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste la validité d'un champ de type texte (longueur et caractères autorisés)
// Fonction dépendante de isStringInList()
function isValidText(champ,chars,li,ls) {
	var champ,chars,li,ls,lg,msg;
	lg = champ.length;
	if(li || ls) {
		if(lg < li) { msg = "Saisie trop courte:\nMinimum : "+li; return msg; }
		if(lg > ls) { msg = "Saisie trop longue:\nMaximum : "+ls; return msg; }
	}
	if(!isStringInList(champ,chars)) { msg = "Caractères interdits !"; return msg; }
	return "OK";
}
Cette fonction vérifie qu'une chaîne 'champ' passé en premier argument est valide selon les critères définis : caractères autorisés (deuxième argument), longueur minimale (troisième argument) et longeur maximale (quatrième argument). Le test sur la longueur ne sera pas effectué si les deux longueurs minimales et maximales sont toutes les deux égales à 0. Utilise la fonction isStringInList()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste la validité d'une adresse mail (format et caractères, pas l'existence)
// Fonction dépendante de isStringInList() et de isEmail()
function isValidMail(mail,list) {
	var mail,list;
	if(isEmail(mail) && isStringInList(mail,list)) {
		return "OK"; }
	else {
		return "Adresse mail incorrecte";
	}
}
Cette fonction vérifie la validité d'une adresse mail passée en premier argument quant à son format et aux caractères autorisés dont la liste est passée en deuxième argument. Utilisent les fonctions isStringInList() et isEmail()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste si le fichier envoyé ne dépasse pas la taille autorisée
// Le champ de type file doit avoir un id="...", en plus d'un name="..."
// La taille passée en paramètre doit être exprimée en octets
function isValidInputSize(id,size) {
	var input,size,hsize;
	input = document.getElementById(id);
	if(input.files.length > 0 && input.files[0].size > size) {
		hsize = (size/1024 > 1024) ? (size/1048576+" Mo") : (size/1024+" Ko");
		return input.files[0].name +" : fichier trop gros ("+ hsize +" maximum).";
	}
	return "OK";
}
bla bla... à détailler...

Autres fonctions utiles

Quelques autres fonctions utiles

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Left Trim. Supprime les espaces de début de chaîne
function ltrim(myString) {
	var myString;
	return myString.replace(/^\s+/g,'');
}
Cette fonction enlève les espaces inutiles en début de chaîne de caractères.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Right Trim. Supprime les espaces de fin de chaîne
function rtrim(myString) {
	var myString;
	return myString.replace(/\s+$/g,'');
}
Cette fonction enlève les espaces inutiles en fin de chaîne de caractères.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Trim. Supprime les espaces de début et de fin de chaîne
function trim(myString) {
	var myString;
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'');
}
Cette fonction enlève les espaces inutiles en début et en fin de chaîne de caractères.

Les variables de base

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Ensembles de caractères fréquemment utilisés.
var ascii    = "abcdefghijklmnopqrstuvwxyz";
var lettres  = "abcdefghijklmnopqrstuvwxyzàâäéèêëîïùûüÿç";
var chiffres = "0123456789";
Ces variables regroupent sous un nom un ensemble de caractères spécifiques. Vous pouvez si nécessaire créer les vôtres propres telles que "signes" contenant les signes mathématiques et signes de ponctuation. Evitez toutefois les opérateurs de comparaison > et < ainsi que | (Alt-124 ou Alt-Gr 6) qui peuvent être dangereux lorsqu'ils sont utilisés comme opérateurs de redirection.
Vous pouvez enregistrer ces fonctions et variables de base dans un fichier fnvar_base.js (pour fonctions et variables de base) et l'insérer comme ci-dessous dans les pages qui auront à vérifier des formulaires.
<script src="fnvar_base.js" type="text/javascript"></script>
Vous n'aurez plus ensuite qu'à écrire la fonction verif() { ... } qui utilisera ces fonctions pour effectuer les tests spécifiques à votre formulaire.

 

 

Mise à jour le 27/04/2021 à 23:32:57