Blame | Last modification | View Log | RSS feed
/*Origine du script : http://actuel.fr.selfhtml.org/articles/javascript/controle_formulaire/index.htmAuteur : Dieter RABER <d.raber@gmx.net>*/function validate(sender, myarray, err_hd) {var message_erreur = !err_hd?new Array('Les erreurs suivantes sont survenues:\n'):new Array(err_hd+'\n');var error = false;if (!sender.name) {alert('Le formulaire doit comporter un attribut name');return false;}for (i = 0; i < myarray.length; i++) {field = document.forms[sender.name].elements[myarray[i][0]];/* Bloc 1 vérifie les champs qui doivent être renseignés */if (myarray[i][1].indexOf('e') > -1) {if (!field.value) {error = true;message_erreur.push(myarray[i][2]);}}/* Bloc 2 vérifie si l'adresse électronique est correcte dans la forme */else if (myarray[i][1].indexOf('m')>-1) {if (field.value) {var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";var regex = "^"+usr+"\@"+domain+"$";var myrxp = new RegExp(regex);var check = (myrxp.test(field.value));if (check!=true) {error = true;message_erreur.push(field.value+" "+myarray[i][2]);}}}/* Bloc 3 vérifie les champs dont la valeur doit être numérique */else if (myarray[i][1].indexOf('n')>-1) {var num_error = false;if(field.value) {var myvalue = field.value;var num = myvalue.match(/[^0-9,\.]/gi)var dot = myvalue.match(/\./g);var com = myvalue.match(/,/g);if (num!=null) {num_error = true;}else if ((dot!=null)&&(dot.length>1)) {num_error = true;}else if ((com!=null)&&(com.length>1)) {num_error = true;}else if ((com!=null)&&(dot!=null)) {num_error = true;}}if (num_error==true) {error = true;message_erreur.push(myvalue+" "+myarray[i][2]);}}/* Bloc 4 vérifie la valeur à l'aide d'une expression régulière sur un modèle déterminé */else if (myarray[i][1].indexOf('r')>-1) {var regexp = myarray[i][3];if (field.value) {if (!regexp.test(field.value)) {error = true;message_erreur.push(field.value+" "+myarray[i][2]);}}}/* Bloc 5 vérifie les champs qui doivent être formatés comme des prix et modifie éventuellement le formatage */else if (myarray[i][1].indexOf('p')>-1) {var myvalue = field.value;var reg = /,-{1,}|\.-{1,}/;var nantest_value = myvalue.replace(reg,"");var num = nantest_value.match(/[^0-9,\.]/gi)sep = myarray[i][1].substr(1,1)?myarray[i][1].substr(1,1):',';if (field.value) {var myvalue = field.value.replace(/\./,',');if (myvalue.indexOf(',')==-1) {field.value = myvalue+sep+'00';}else if (myvalue.indexOf(",--")>-1) {field.value = myvalue.replace(/,--/,sep+'00');}else if (myvalue.indexOf(",-")>-1) {field.value = myvalue.replace(/,-/,sep+'00');}else if (!myvalue.substring(myvalue.indexOf(',') + 2)) {error=true;message_erreur.push(field.value+" "+myarray[i][2]);}else if (myvalue.substring(myvalue.indexOf(',') + 3)!='') {error=true;message_erreur.push(field.value+" "+myarray[i][2]);} else if (num!=null) {error = true;message_erreur.push(field.value+" "+myarray[i][2]);}}}/* Bloc 6 vérifie les champs de nom et rectifie éventuellement la casse */else if (myarray[i][1].indexOf('c')>-1) {var noble = new Array(" d\'", "de","von","van","der","d","la","da","of");var newvalue='';var myvalue = field.value.split(/\b/);for (k=0;k<myvalue.length;k++) {newvalue+= myvalue[k].substr(0,1).toUpperCase()+myvalue[k].substring(1);}for(k = 0; k < noble.length; k++){var reg = new RegExp ("\\b"+noble[k]+"\\b","gi");newvalue = newvalue.replace(reg,noble[k]);}field.value = newvalue;}}/* En cas d'erreur, les messages d'erreur récoltés sont exploités ici puis affichés.Si le formulaire est correctement rempli, il est transmis */if (error) {message_erreur = message_erreur.join('\n\xB7 ');alert(message_erreur);return false;} else {return true;}}