ERRATUM2: JavaScript: vérifier le numéro INSEE

Décidément, cette vérification m’aura donné du fil à retordre ! Je vous disais dans un article publié un peu plus tôt que la v1 comparait des String, et que le résultat était 9 != 09
La v2 m’a fait ouvrir de grands yeux lorsque j’ai vu s’afficher 9 != 0
9 est différent de 0, je veux bien, mais d’où il sort, ce zéro, j’ai mal calculé mon substring ou quoi ?
Que nenni, la réponse est dans le fonctionnement de parseInt() :
  • Syntaxe : parseInt(string, radix)
  • If the string begins with “0”, the radix is 8 (octal). This feature is deprecated.
Tout ça pour dire :
function checkInsee(myInseeField) {
    var isValid = true;
    var expression = new RegExp(“^[12]\\d{14}$”);
    myInseeField.style.backgroundColor = ‘white’;
   
    if (!myInseeField.value.match(expression))
    {
        isValid = false;
        myInseeField.style.backgroundColor = ‘#efcfcd’;
    } else
    {
        var partialInsee = myInseeField.value.toString().substring(0, 13);
        var clef = 97 – (parseFloat(partialInsee) % 97);
        if(clef != parseInt(myInseeField.value.toString().substring(13, 15), 10))
        {
            isValid = false;
            myInseeField.style.backgroundColor = ‘#efcfcd’;
        }
    }
    return isValid;
}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: