/* '===================================================================================== ' Fichier : /service/Includes/utils/string.js ' Rôle : Fonctions de gestion de chaînes de caractères en JavaScript ' Créé le : 29/01/2001 ' Par : NM - DECITRE ' Date et objet Modif : ' 25/09/2001 - CB/DEC - Ajout "<",">" et "|" aux caractères non valides d'une ' adresse mail dans "dec_EmailValide" ' - Correction bug : indexOf commence à 0, et non à 1 !!! ' 26/11/2003 - CB/DEC - Ajout "ã","õ","ñ" aux caractères non valides d'une ' adresse mail dans "dec_EmailValide" ' - Ajout de : "dec_LRTrim", "dec_Trim", "dec_StrOnlyLstCars", ' "dec_StrOnly09", "dec_StrOnly09AZ", "dec_StrOnlyEMail" ' 12/12/2003 - CB/DEC - Utilisation expr. régulière en JS dans fonctions formatage ' 06/05/2004 - CB/DEC - Modif fonction "dec_EmailValide" : Expr Régulière '===================================================================================== */ function dec_EmailValide (Champ_EMail, Champs_EmailFocus) /* '// ------- '// Contrôle la validité du format d'une adresse e-mail '// ------- '// ENTREE : Champ d'un formulaire (du type document.Form.Champ) '// SORTIE : true, si l'adresse e-mail a un format valide, '// false sinon (le focus retourne alors sur le champ) '// ------- */ { var strEMail = new String (Champ_EMail.value); var result; var strCarOK = '@.'; var strCarPasOK = new String ('àâäãçéèêëìîïòôöõùûüñ &*?!:;,\t#~"^¨%$£?²¤§%*()[]{}<>|\\/`\''); var strMsgErr = new String(); var tabSplitEmail = new Array (); var strCarPasOK_AutourArobase = new String ('.'); var boolPartAvArobaseOK = true; // Partie de l'adresse AVANT l'arobase correcte ? var boolPartApArobaseOK = true; // Partie de l'adresse APRÈS l'arobase correcte ? if (strEMail.length < 4) { strMsgErr = "L'adresse e-mail " + strEMail + " n'est pas assez longue.\n"; result = false; } else result = true; // Caractères obligatoires dans l'adresse e-mail var NumCar = 0; while ((result) && (NumCar < strCarOK.length)) { if (! (strEMail.indexOf(strCarOK.charAt(NumCar)) >= 0)) { strMsgErr = "L'adresse e-mail doit obligatoirement comporter le caractère '"+strCarOK.charAt(NumCar)+"'.\n"; result = false; } else NumCar++; } // '@' et '.' //alert ('pos.=' + posLastPt + ' pos@+1=' + parseInt (posArobase+1,10)); if (result) { var posArobase = parseInt (strEMail.indexOf('@'),10); if ((parseInt(posArobase,10) == 0) || (parseInt(posArobase,10) != parseInt(strEMail.lastIndexOf('@'),10)) || (parseInt(posArobase,10) > parseInt(strEMail.lastIndexOf('.'),10)) || (strEMail.charAt(parseInt(posArobase+1,10)) == '.') || (strEMail.charAt(parseInt(posArobase-1,10)) == '.') || (strEMail.charAt(strEMail.length-1) == '.') || (parseInt(strEMail.indexOf ('.'),10) == 0) ) { strMsgErr = "La position des '.' et/ou du '@' incorrecte.\n"; result = false; } } // Caractères interdits dans l'adresse e-mail NumCar = 0; while ((result) && (NumCar < strCarPasOK.length)) { if (strEMail.indexOf(strCarPasOK.charAt(NumCar)) >= 0) { strMsgErr = "L'adresse e-mail ne peut pas contenir le caractère '"+strCarPasOK.charAt(NumCar)+"'.\n"; result = false; } else NumCar++; } // eMail au format W3C //var regW3CMail = new RegExp ("^(([^<>;()[\]\\.,;:@\"]+(\.[^<>()[\]\\.,;:@\"]+)*)|(\".+\"))@((([a-z]([-a-z0-9]*[a-z0-9])?)|(#[0-9]+)|(\[((([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\.){3}(([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\]))\.)*(([a-z]([-a-z0-9]*[a-z0-9])?)|(#[0-9]+)|(\[((([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\.){3}(([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\]))$","i"); if (result) { var regMail = new RegExp ("^([0-9a-zA-Z\-]([\-\+\_\w\.]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([\w\+_-]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$"); if (! regMail.test(strEMail)) { strMsgErr = "Le format de l'adresse e-mail est incorrecte.\n" + "Merci de vérifier qu'elle ne comporte pas de caractères accentués, d'espaces, de '<' ou '>'\n" + "et que la position des '.' et du '@' sont correctes.\n"; result = false; } } //if ((strEMail == '') || (! regMail.test(strEMail))) if (! result) { if ((typeof(strMsgErr) != "undefined") && (strMsgErr != null) && (strMsgErr != "")) { if (typeof(document.getElementById("overDiv")) != 'undefined') { if (typeof(Champs_EmailFocus) == "undefined") { overlib('
InformationInformationsFermer
 Nous vous remercions de saisir une adresse e-mail valide.
',STICKY,BGCOLOR,'#7D8989',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE); } else { if (typeof(document.getElementById(Champs_EmailFocus)) != 'undefined') { overlib('
InformationInformationsFermer
 Nous vous remercions de saisir une adresse e-mail valide.
',STICKY,BGCOLOR,'#7D8989',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE); } } } else { alert ('Nous vous remercions de saisir une adresse e-mail valide.'); } } else { if (typeof(document.getElementById("overDiv")) != 'undefined') { if (typeof(Champs_EmailFocus) == "undefined") { overlib('
InformationInformationsFermer
 Nous vous remercions de saisir une adresse e-mail valide.
',STICKY,BGCOLOR,'#7D8989',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE); } else { if (typeof(document.getElementById(Champs_EmailFocus)) != 'undefined') { overlib('
InformationInformationsFermer
 Nous vous remercions de saisir une adresse e-mail valide.
',STICKY,BGCOLOR,'#7D8989',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE); } else { overlib('
InformationInformationsFermer
 Nous vous remercions de saisir une adresse e-mail valide.
',STICKY,BGCOLOR,'#666666',FGCOLOR,'white',CELLPAD,1,WIDTH,300,CENTERPOPUP, EXCLUSIVE); } } } else { alert ('Nous vous remercions de saisir une adresse e-mail valide.'); } } if (typeof(Champs_EmailFocus) != "undefined") { Champ_EMail.focus(); } } return result; } function dec_LRTrim (strString) /* '// ------- '// Supprime les espaces/tabulation/... de DÉBUT et FIN d'une chaîne '// Utilise les expressions régulières. '// ------- '// ------- */ { //return strString.replace(/^\s*(.)/gi, "$1").replace(/(.)\s*$/gi, "$1"); return strString.replace(/(^\s*)|(\s*$)/g,''); } function dec_Trim (strString) /* '// ------- '// Supprime TOUS les espaces/tabulations/... d'une chaîne '// ------- '// ------- */ { return strString.replace(/\s/, ""); } function dec_StrOnlyLstCars (strString, strLstCars, boolUpperLower) /* '// ------- '// Ne garde que certains caractères d'une chaine '// ------- '// ENTREE '// strString : Chaine à "filtrer" '// strLstCars : Chaine contenant la liste des caractères "autorisés" '// boolUpperLower : 0 : pas de conversion de casse '// 1 : conversion en majuscules '// 2 : conversion en minuscules '// ------- */ { strSrc = new String (strString); if (boolUpperLower == 1) strSrc = strSrc.toUpperCase(); else if (boolUpperLower == 2) strSrc = strSrc.toLowerCase(); strOnly = new String(""); strCarsAGarder = new String(strLstCars); iMaxCar = strSrc.length-1; for (iNumCar=0; iNumCar<=iMaxCar; iNumCar++) { if (strCarsAGarder.indexOf(strSrc.charAt(iNumCar)) >= 0) { strOnly = strOnly + strSrc.charAt(iNumCar); } } return strOnly; } function dec_StrOnly09 (strString) /* '// ------- ' Ne garde que les caractères numériques d'une chaine '// ------- '// ------- */ { //return dec_StrOnlyLstCars (strString, "0123456789", 0); return strString.replace (/[^0-9]/g,""); } function dec_StrOnly09Pt (strString) /* '// ------- ' Ne garde que les caractères numériques et séparateurs décimaux d'une chaine '// ------- '// ------- */ { //return dec_StrOnlyLstCars (strString, "0123456789,.", 0); return strString.replace (/[^0-9,.]/g,""); } function dec_StrOnly09AZ (strString) /* '// ------- ' Ne garde que les caractères AlphaNum d'une chaine '// ------- '// ------- */ { //return dec_StrOnlyLstCars (strString, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 1); return strString.replace (/[^A-Z0-9]/gi,"").toUpperCase(); } function dec_StrOnlyEMail (strString) /* '// ------- ' Ne garde que les caractères autorisés pour une adresse e-mail '// ------- '// ------- */ { return dec_StrOnlyLstCars (strString, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@.-_", 0); } function dec_IsNumeric (strString) /* '// ------- ' Teste si une chaîne est une valeur numérique valide ou non '// ------- '// ------- */ { return (strString.search (/^[0-9]+([,.][0-9]+)?$/) >= 0); } function gestErreur (err) { if (err != '') { alert(err); } } //------------------------------------------------------- function dec_Verif_Num_Cde(Champ_NumCde) { // vérification du format de la commande var strNumCde = new RegExp("^[A-Z]{1}[0-9]{7}$","i"); //var strNumCde = "^[A-Z]{1}[0-9]{7}$"; return (Champ_NumCde.match(strNumCde)); } //------------------------------------------------ // RAZ SID + Reload function dec_RAZ_SID () { var expDate = new Date() expDate.setTime(expDate.getTime() + (-1 * 24 * 3600 * 1000)) document.cookie = "SID" + "=" + ";expires=" + expDate.toGMTString() document.location.replace ('/accueil.aspx?sid=0x0000000000000000'); } // Fonction de délimitation du text area passé en paramètre avec affichage du décompte du nombre de caractères var ns6=document.getElementById&&!document.all; function restrictinput(maxlength,e,placeholder) { if (window.event&&event.srcElement.value.length>=maxlength) return false; else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength) { var pressedkey=/[a-zA-Z0-9\.\,\/]/ ; if (pressedkey.test(String.fromCharCode(e.which))); e.stopPropagation(); } } function countlimit(maxlength,e,placeholder, display) { var theform=eval(placeholder); var lengthleft=maxlength-theform.value.length; var placeholderobj=document.all? document.all[placeholder] : document.getElementById(placeholder); if (window.event||e.target&&e.target==eval(placeholder)) { if (lengthleft<0) theform.value=theform.value.substring(0,maxlength); if (display == 1) placeholderobj.innerHTML=lengthleft; } } function displaylimit(thename, theid, thelimit, display) { var theform=theid!=""? document.getElementById(theid) : thename; if (display == 1) var limit_text=''+thelimit+' characteres Maximum.'; else var limit_text=''; if (document.all||ns6) document.write(limit_text); if (document.all) { eval(theform).onkeypress=function(){ return restrictinput(thelimit,event,theform)}; eval(theform).onkeyup=function(){ countlimit(thelimit,event,theform,display)}; } else if (ns6) { document.body.addEventListener('keypress', function(event) { restrictinput(thelimit,event,theform) }, true); document.body.addEventListener('keyup', function(event) { countlimit(thelimit,event,theform,display) }, true); } } //fonction qui detecte si la chaine passé en paramètre ne contient pas de caractère non valide function dec_caractere_valid(chaine) { Result = true; var regChaine = new RegExp ("^[0-9a-zA-Z \;\.\,\:\'\/\\\-àâäéèêëûüùçôöîï\(\)]+$"); if (!regChaine.test(chaine)) { Result = false; } return Result; } //======================================================== // Fonctions pour empecher de COLLER dans certains champs // ne fonctionne qu'avec la combinaison de touches CTRL+C // (autant dire que c'est pas génial) //======================================================== var strOldSaisie = ""; var boolColler = false; // Teste si la frappe clavier correspond a CTRL+V function dec_TesteColler(e, val) { if (boolColler) return false; if (window.event) { // IE if (window.event.type=="keypress") { if (window.event.ctrlKey && String.fromCharCode(e.which).toUpperCase()=="V") { strOldSaisie=val; boolColler=true; return false; } } } else { // Netscape if (e.type=="keypress") { if (e.ctrlKey && String.fromCharCode(e.which).toUpperCase()=="V") { strOldSaisie=val; boolColler=true; return false; } } } } // Si la frappe est CTRL+V => on annule la derniere saisie function dec_AnnuleColler(name, formname) { if (boolColler) { dec_SetFieldValue(eval("document."+formname+"."+name), strOldSaisie); boolColler=false; strOldSaisie=""; } } // Affecte une valeur a un champ function dec_SetFieldValue(field, val) { field.value = val; return true; } //========================================================