Generator de CNP-uri in JavaScript

Cautand astazi pe Web dupa un generator de CNP-uri, dar realizat in JavaScript si negasind nimic, am decis sa realizez eu unul. In continuare o sa atasez codul comentat:


<!DOCTYPE html>
<html>
<title>Generator de CNP-uri in JavaScript</title>
<meta name="author" content="Silviu-S.com">
<body>
<p id="demo">Apasa butonul pentru a genera CNP-uri</p>
<button onclick="genereaza()">Genereaza</button>
<ul id="lista"></ul>
<script>
function genereaza()
{

var sex = Math.floor(Math.random() * (8 - 1 + 1)) + 1;
var an = Math.floor(Math.random() * (99 - 14 + 1)) + 14;
var luna = Math.floor(Math.random() * (12 - 1 + 1)) + 1;
var ziua = Math.floor(Math.random() * (28 - 1 + 1)) + 1;
var judet = Math.floor(Math.random() * (52 - 1 + 1)) + 1;
var nnn = Math.floor(Math.random() * (999 - 1 + 1)) + 1;

if(luna<10) luna = "0" + luna;
if(ziua<10) ziua = "0" + ziua;
if(judet<10) judet = "0" + judet; //adaugare un 0 in fata daca numarul este mai mic decat 10
if(nnn<10) nnn = "00" + nnn;
if(nnn<100 && nnn>10) nnn = "0" + nnn;

var cnp_i = sex+""+an+""+luna+""+ziua+""+judet+""+nnn; //concatenarea datelor
var cnp_f = cnp_i.replace(/ /g, ''); //eliminarea spatiilor

//calcularea cifrei de control
var cnp = cnp_i.split('');
var cifra = ["2", "7", "9", "1","4","6","3","5","8","2","7","9"];
suma = 0;
for (i = 0; i < 12; i++) {
if(isNaN(cnp[i])==false) //verificarea daca cnp-ul generat pana acum este format doar din numere
suma += (cifra[i] * cnp[i]); //calcularea sumei de control
}
var rest = suma % 11;
if(rest==10)
var cifra_control = 1;
else
var cifra_control = rest;
var cnp_final=cnp_f.concat(cifra_control); //concatenarea cifrei de control la restul cnp-ului
var node=document.createElement("LI"); //crearea unui element "li"
var textnode=document.createTextNode(cnp_final); //crearea unui nod, in vederea adaugarii informatiilor
node.appendChild(textnode);
document.getElementById("lista").appendChild(node);
}
</script>
<footer>
<p>Script realizat de: <a href="http://silviustroe.com">Silviu-S.com</a</p>
</footer>
</body>
</html>

Daca folositi acest generator pe site-ul dvs, va rog sa lasati footer-ul intact, multumesc! 😀

Puteti testa scriptul aici.

    Silviu Stroe
    I'm Silviu and I run Brainic, a mobile-focused software agency. I'm also a member of Nokia and Yahoo wall of fame. My interests are in low-code/no-code development and bleeding-edge technologies.

    5 thoughts on “Generator de CNP-uri in JavaScript”

    1. din pacate nu functioneaza cum trebuie….genereaza cnp de genul 7581005154601
      4170321120064
      2410922393361
      4890302173819 ceea ce ii cea mai mare aberatie….cnp poate incepe cu 1 sau 2….nici decum cu 4 sau 7 :))

      1. Conform Wikipedia
        Prima cifră a C.N.P.-ului este: (sex bărbătesc / sex femeiesc)

        1 / 2 – născuÈ›i între 1 ianuarie 1900 È™i 31 decembrie 1999
        3 / 4 – născuÈ›i între 1 ianuarie 1800 È™i 31 decembrie 1899
        5 / 6 – născuÈ›i între 1 ianuarie 2000 È™i 31 decembrie 2099
        7 / 8 – pentru persoanele străine rezidente în România.
        ÃŽn plus 9 – pentru persoanele străine.

        Data viitoare cand aduci o afirmatie, te rog sa aduci si argumentele necesare acesteia.

        1. Salut Silviu
          Te rog, poti sa-mi generezi si mie la gramada, adica multe multe gen cel putin 100 daca nu chiar 1000, doar cu un singur clic, pentru Pahova, 29, imi trebuie pentru exercitiu de tastare, iti pot spune mai multe in privat daca este nevoie

          1. Multumesc!
            doar cu 1 si 2 adica 1 / 2 – născuți între 1 ianuarie 1900 și 11 decembrie 1998 mai exact adica nu mai putin de 18 ani impliniti pina pe 11 dec. inclusiv

    Leave a Reply

    Your email address will not be published. Required fields are marked *