var inPrenom = document.getElementById('crPrenom'); var inNom = document.getElementById('crNom'); var inAdr = document.getElementById('crAdr'); var inAdr2 = document.getElementById('crAdr2'); var inCP = document.getElementById('crCP'); var inVille = document.getElementById('crVille'); var inDN = document.getElementById('crDN'); var inLN = document.getElementById('crLN'); var inSecu = document.getElementById('crSecu'); var sbCreer = document.getElementById('sbCreer'); // SUBMIT var inCk = new inputChecker(); // format de la date var dateFormat = new formatChecker(null, 'Ji/Mi/Aiii', { 'J': '[0-3]', 'M': '[0-1]', 'A': '[1-2]' } ); // format du numéro de sécu var secuFormat = new formatChecker(null, 'S ii Mi ii iii iii ii', { 'S': '[0-1]', 'M': '[0-1]' } ); inCk.append( inCP, new formatChecker( null, 'iiiii'), '09000'); // on ajoute le CODE_POSTAL au vérificateur de champs inCk.append( inDN, dateFormat, '01/01/2015'); // on ajoute la DATE_NAISSANCE au vérificateur de champs inCk.append( inSecu, secuFormat, '1 99 19 99 999 999 99'); // on ajoute le NUM_SECU au vérificateur de champs /* Met à jour l'état visuel d'un si sa valeur correspond aux initères * * @pInputElement l'élément en question * @pMinLength la taille minimum autorisée * @pMaxLength la taille maximum autorisée * @optAlpha [OPT] TRUE si uniquement alphanumérique */ function checkVARCHAR(pInputElement, pMinLength, pMaxLength, optAlpha){ var optAlpha = (arguments.length > 3) ? optAlpha : false; optAlpha = (typeof optAlpha == 'boolean') ? optAlpha : false; var varcharRegExp; if( optAlpha ) varcharRegExp = new RegExp('^([a-z]{'+pMinLength+','+pMaxLength+'})$', 'i'); // only alpha characters else varcharRegExp = new RegExp('^([\\w -]{'+ pMinLength+','+pMaxLength+'})$', 'i'); // any word character if( pInputElement.value.match(varcharRegExp) != null ){ // si champ correct addClass(pInputElement, 'validated'); remClass(pInputElement, 'invalid'); }else{ remClass(pInputElement, 'validated'); addClass(pInputElement, 'invalid'); } } ////////////////////////////// // PRENOM & NOM (VARCHAR 45)// ////////////////////////////// inPrenom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 45, true); }, false); inNom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 45, true); }, false); ////////////////////////////////////// // ADRESSE & ADRESSE2 (VARCHAR 255) // ////////////////////////////////////// inAdr.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 5, 255); }, false); inAdr2.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 5, 255); }, false); //////////////////////////// // VILLE & LIEU_NAISSANCE // //////////////////////////// inVille.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 50); }, false); inLN.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 50); }, false); ///////////////// // CODE POSTAL // ///////////////// inCP.addEventListener('keyup', function(e){ if( inCk.check(inCP) ) addClass(inCP, 'validated'); // on active la classe si correct else{ // si incorrect remClass(inCP, 'validated'); // on désactive la classe inCk.correct(inCP, false); // on corrige partiellement if( inCk.check(inCP) ) addClass(inCP, 'validated'); // mise à jour de la classe après correction } }, false); /////////////////////// // DATE DE NAISSANCE // /////////////////////// inDN.addEventListener('keyup', function(e){ if( inCk.check(inDN) ) addClass(inDN, 'validated'); // on active la classe si correct else{ // si incorrect remClass(inDN, 'validated'); // on désactive la classe inCk.correct(inDN, false); // on corrige partiellement if( inCk.check(inDN) ) addClass(inDN, 'validated'); // mise à jour de la classe après correction } }, false); //////////////////// // NUMERO DE SECU // //////////////////// function checkSecuControlKey(pNumSecu){ var NIR = pNumSecu.slice(0,-2).replace(/ /g, ''); var key = pNumSecu.slice(-2); return 97-(NIR%97) == key; } inSecu.addEventListener('keyup', function(e){ if( inCk.check(inSecu) ){ if( checkSecuControlKey(inSecu.value) ){ // si la clé est correcte addClass(inSecu, 'validated'); // on dis que le champ est valide remClass(inSecu, 'invalid'); // on dis qu'il n'est pas invalide }else{ remClass(inSecu, 'validated'); // on dis que le champ n'est pas valide addClass(inSecu, 'invalid'); // on dis qu'il est invalide } }else{ // si incorrect remClass(inSecu, 'validated'); // on désactive la classe remClass(inSecu, 'invalid'); // on dis qu'il n'est pas invalide inCk.correct(inSecu, false); // on corrige partiellement if( inCk.check(inSecu) ){ if( checkSecuControlKey(inSecu.value) ){ // si la clé est correcte addClass(inSecu, 'validated'); // on dis que le champ est valide remClass(inSecu, 'invalid'); // on dis qu'il n'est pas invalide }else{ remClass(inSecu, 'validated'); // on dis que le champ n'est pas valide addClass(inSecu, 'invalid'); // on dis qu'il est invalide } } } }, false); sbCreer.addEventListener('click', function(e){ e.preventDefault(); // on annule le submit() var inputCheckerValid = inCk.checkAll(); var allInputValidated = inPrenom.className.indexOf('validated') > -1 && inNom.className.indexOf('validated') > -1 && inAdr.className.indexOf('validated') > -1 && inAdr2.className.indexOf('validated') > -1 && inCP.className.indexOf('validated') > -1 && inVille.className.indexOf('validated') > -1 && inDN.className.indexOf('validated') > -1 && inLN.className.indexOf('validated') > -1 && inSecu.className.indexOf('validated') > -1; if( inputCheckerValid && allInputValidated ) // si tout es ok uniquement, on submit() sbCreer.parentNode.submit(); }, false);