/* [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'); // 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, now.toLocaleFormat('%d/%m/%Y') ); inCk.append( inHeure, timeFormat, now.toLocaleFormat('%H:%M') ); 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';