Validation du numéro de SECU avec la clé de contrôle

This commit is contained in:
xdrm-brackets 2015-12-09 12:28:04 +01:00
parent 2ebf66e0b7
commit f831a1a5ed
3 changed files with 50 additions and 6 deletions

View File

@ -80,7 +80,7 @@ if(!Authentification::checkUser(0)){
<article data-title="Numéro de sécurité sociale">
<div>
<input type='text' id='inSecu' placeholder='1 99 99 99 999 999 99'>
<input type='text' id='inSecu' placeholder='1 99 99 99 999 999 99'><span class='invalid'>Numéro invalide.</span>
</div>
</article>

View File

@ -352,6 +352,22 @@ body{
border-color: #1cc952;
}
/* .invalid */
#CONTAINER > article input.invalid{
border-color: #ec111c;
}
/* <span.invalid> après <input.invalid> */
#CONTAINER > article input.invalid + span.invalid{
color: #ec111c;
}
/* <span.invalid> après <input> */
#CONTAINER > article input:not(.invalid) + span.invalid{
display: none;
color: #ec111c;
}
/* <INPUT> [type=submit] */
#CONTAINER > article input[type=submit]{

View File

@ -53,7 +53,7 @@ var timeFormat = new formatChecker(null,
// format numéro SECU simplifié
var secuFormat = new formatChecker(null,
'S ii ii ii iii iii ii', { 'S': '[0-1]' }
'S ii Mi ii iii iii ii', { 'S': '[0-1]', 'M': '[0-1]' }
);
@ -84,16 +84,44 @@ inHeure.addEventListener('keyup', function(e){
}
}, 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) ) addClass(inSecu, 'validated'); // on active la classe
else{ // si incorrect
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) ) addClass(inSecu, 'validated'); // mise à jour de la classe après correction
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 = 'x3 F3/a8';
inSecu.value = '1 96 01 31 555 861';