var notifBar = document.getElementById('NOTIFBAR'); notifBar.children[1].children[2].addEventListener('click', function(e){ remClass(notifBar, 'active'); }, false); /* [1] On récupère les 2 , on créé l'évènement de selection dynamique ===============================================================*/ if( newRDVPatient != null && newRDVMedecin != null ){ /* [1] On selectionne dynamiquement le médecin traitant associé =======================================================================*/ newRDVPatient.addEventListener('change', function(e){ var child = document.querySelector("#newRDVPatient > option[value='"+newRDVPatient.value+"'][data-medecin]"); // on selectionne le medecin associé newRDVMedecin.value = child.dataset.medecin; addClass(newRDVMedecin, 'associated'); }, false); // [1] On met en valeur le médecin traitant associé (class=associated) // ======================================================================= newRDVMedecin.addEventListener('change', function(e){ var child = document.querySelector("#newRDVPatient > option[value='"+newRDVPatient.value+"'][data-medecin]"); if( newRDVMedecin.value == child.dataset.medecin ) // si c'est le medecin traitant, on met en valeur l'association addClass(newRDVMedecin, 'associated'); else remClass(newRDVMedecin, 'associated'); }, false); } /* VERIFICATION DES CHAMPS */ var inCk = new inputChecker(); var inDate = document.getElementById('inDate'); var inHeure = document.getElementById('inHeure'); var inSecu = document.getElementById('inSecu'); var sbCreer = document.getElementById('sbCreer'); // format de date simplifié var dateFormat = new formatChecker(null, 'Ji/Mi/2iii', { 'J': '[0-3]', 'M': '[0-1]' } ); // format de temps simplifié var timeFormat = new formatChecker(null, 'Hi:Mi', { 'H': '[0-2]', 'M': '[0-6]' } ); // format numéro SECU simplifié var secuFormat = new formatChecker(null, 'S ii Mi ii iii iii ii', { 'S': '[0-1]', 'M': '[0-1]' } ); var now = new Date(); inCk.append( inDate, dateFormat, '01/01/2015' ); inCk.append( inHeure, timeFormat, '23:59' ); inCk.append( inSecu, secuFormat, inSecu.placeholder ); inDate.addEventListener('keyup', function(e){ if( inCk.check(inDate) ) addClass(inDate, 'validated'); // on active la classe si correct else{ // si incorrect remClass(inDate, 'validated'); // on désactive la classe inCk.correct(inDate, false); // on corrige partiellement if( inCk.check(inDate) ) addClass(inDate, 'validated'); // mise à jour de la classe après correction } }, false); inHeure.addEventListener('keyup', function(e){ if( inCk.check(inHeure) ) addClass(inHeure, 'validated'); // on active la classe else{ // si incorrect remClass(inHeure, 'validated'); // on désactive la classe inCk.correct(inHeure, false); // on corrige partiellement if( inCk.check(inHeure) ) addClass(inHeure, 'validated'); // mise à jour de la classe après correction } }, false); inDuree.addEventListener('keyup', function(e){ if( !isNaN(parseInt(inDuree.value)) ){ inDuree.value = parseInt( inDuree.value ); // on caste en addClass(inDuree, 'validated'); // on active la classe si correct }else // si incorrect remClass(inDuree, 'validated'); // on désactive la classe }, false); 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); // inDate.value = 'x3 F3/a8'; // inHeure.value = 'x3 F3/a8'; inSecu.value = '1 96 01 31 555 861'; ////////////////////////////// // VERIFICATION DU SUBMIT() // ////////////////////////////// sbCreer.addEventListener('click', function(e){ e.preventDefault(); // on annule le submit() var formElements = sbCreer.parentNode.children; var checker = true; // pour chaque du formulaire (fils direct uniquement) for( var i = 0 ; i < formElements.length ; i++ ){ if( formElements[i] instanceof HTMLInputElement && formElements[i].type == 'text' ){ // si le champ est requis (required) if( formElements[i].required ) checker = checker && formElements[i].className.indexOf('validated') > -1; // TRUE => validé (niveau interface) // si le champ n'est pas requis et pas vide, on le vide else if( formElements[i].value != '' && formElements[i].className.indexOf('validated') < 0 ) // si incorrect et pas vide formElements[i].value = ''; // on vide }} var inputCheckerValid = inCk.check(inDate) && inCk.check(inHeure); var selectNoDefault = newRDVPatient.value != '*' && newRDVMedecin.value != '*'; console.log( inputCheckerValid ); console.log( checker ); console.log( selectNoDefault ); if( inputCheckerValid && checker && selectNoDefault ) // si tout es ok uniquement, on submit() sbCreer.parentNode.submit(); }, false);