Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di alegia76
    Registrato dal
    Mar 2003
    Messaggi
    1,179

    [javascript] Controllo validità Codice Fiscale

    Ciao a tutti!

    Come faccio a realizzare una funzione che mi controlli se un codice fiscale inserito è valido, partendo da cognome, nome, comune e data di nascita inseriti precedentementi in input?

    Grazie.

    Ale
    Sei l'eventualità di un'anomalia che nonostante i miei più onesti sforzi non sono stato in grado di eliminare da quella che altrimenti sarebbe un'armonia di precisione matematica..

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Script di questo genere ne sono stati pubblicati: fai una ricerca nel forum.

    E non confondere la generazione del CF con la sua validazione.
    Per la validazione e` sufficiente un breve calcolo matematico; per la generazione ocorre come minimo un database dei comuni, che non e` praticamente possibile scaricare sul client.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di alegia76
    Registrato dal
    Mar 2003
    Messaggi
    1,179
    Grazie per la risposta!

    Quindi la validazione è un cosa che non posso fare a livello client, ma per forza quando faccio il submit al server, vero?

    Ok per la generazione, ma se faccio la ricerca nel forum, mi viene sempre fuori :"Impossibile trovare la pagina"
    Sei l'eventualità di un'anomalia che nonostante i miei più onesti sforzi non sono stato in grado di eliminare da quella che altrimenti sarebbe un'armonia di precisione matematica..

  4. #4
    per la validazione puoi farla tranquillamente sul client.
    Visto che la ricerca fa un pò le bizze, questo è un possibile codice, dove mi passo il form:
    codice:
    //Controllo CF
    function controllaCF(objform)
    {
    	var cf, i, s, set1, set2, setpari, setdisp;
            var Giorno;
    	var fcf=/^[A-Z0-9]{16}$/;
    	cf=trim(objform.cf.value.toUpperCase());
            if( cf == "" ){return false;}
    	if( !fcf.test(cf) ) {return false;}
    
    	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
    	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
    	s = 0;
    	for( i = 1; i <= 13; i += 2 ){s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));}
    	for( i = 0; i <= 14; i += 2 ){s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));}
    	if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) ){return false;}
    	
    	if (cf.substr(6,2) != objform.Anno.value.substr(2,2)){return false;} 
    	
    	switch(objform.Mese.value) {
    
    	case "01": Mese = "A";break;
    	case "02": Mese = "B";break;
    	case "03": Mese = "C";break;
    	case "04": Mese = "D";break;
    	case "05": Mese = "E";break;
    	case "06": Mese = "H";break;
    	case "07": Mese = "L";break;
    	case "08": Mese = "M";break;
    	case "09": Mese = "P";break;
    	case "10": Mese = "R";break;
    	case "11": Mese = "S";break;
    	case "12": Mese = "T";break;}
    
    	if (cf.substr(8,1) != Mese ){return false;}  
            if (objform.sesso.value == "M") {Giorno = objform.Giorno.value;}
            
    	else if (objform.sesso.value == "F")
    		{
    		//controllo perchè non funziona il parseInt su un numero che inizia con 0.
    			if (parseInt(objform.Giorno.value) == 0)
    			{Giorno = parseInt(objform.Giorno.value.substr(1,1)) + 40;}
    			else {Giorno = parseInt(objform.Giorno.value) + 40;}
    		}
    	if (cf.substr(9,2) != Giorno ) {return false;}
    
    	return true;
    }
    la form contiene un campo con il codice(cf), 3 select con la data di nascita(Anno,Mese,Giorno) e il campo sesso(sesso).

    Per la creazione, invece devi farla sul server, oppure la fai in ajax, in modo che sembri in locale, anche se non lo è


  5. #5
    Utente di HTML.it L'avatar di alegia76
    Registrato dal
    Mar 2003
    Messaggi
    1,179
    Bella questa cosa di Ajax!
    Posso avere qualche indicazione?
    Sei l'eventualità di un'anomalia che nonostante i miei più onesti sforzi non sono stato in grado di eliminare da quella che altrimenti sarebbe un'armonia di precisione matematica..

  6. #6
    Utente di HTML.it L'avatar di alegia76
    Registrato dal
    Mar 2003
    Messaggi
    1,179
    Sto usando il tuo codice, ma purtroppo mi viene restituito questo errore nella visualizzazione della pagina:
    Immagini allegate Immagini allegate
    Sei l'eventualità di un'anomalia che nonostante i miei più onesti sforzi non sono stato in grado di eliminare da quella che altrimenti sarebbe un'armonia di precisione matematica..

  7. #7
    ma in questa funzione io non utilizzo i metodi del DOM???
    da dove viene quell'errore?
    la mia pagina è cosi strutturata:
    codice:
    <form>
    <input type="text" name="nome" />
    <input type="text" name="cognome" />
    <input type="text" name="cf" />
    <select name="Anno">
    </select>
    <select name="Mese">
    </select>
    <select name="Giorno">
    </select>
    <select name="sesso">
    <option value="M">Maschio</option>
    <option value="F">Femmina</option>
    </select>
    <input type="button" value="Calcola cf" onClick="controllaCf(this.form)" />
    </form>
    quindi non capisco perchè ti dia un errore con il getElementById

    Cmq per la crezione con ajax, partendo da i dati inseriti dall'utente sei in grado di creare tutto il codice, ad eccezione del codice identificativo del comune di nascita.
    Per ricavarlo dovresti interrogare un database, nel quale ci sono tutti i comuni d'italia con i relativi codici.
    Visto che creare una select con tutti questi comuni è impensabile, o meglio fa schifo...(dal mio punto di vista), ti conviene fare tre select, nella prima selezioni la regione, quando questa è stata selezionata, allora popoli la seconda select con le provincie e poi i comuni...
    per il popolamento delle select puoi guardare questo post:

    Popolare select con Ajax

  8. #8
    Utente di HTML.it L'avatar di alegia76
    Registrato dal
    Mar 2003
    Messaggi
    1,179
    Io la data la inserisco come campo text..

    <tr>
    <td> Data di Nascita: </td>
    <td><input type="text" size="25" id='txtdatanasc' name = "txt_datanasc" onchange=controllo_datanasc("txtdatanasc");>
    <div id= err_txtdatanasc></div> </td>
    </tr>


    E' un problema?
    Sei l'eventualità di un'anomalia che nonostante i miei più onesti sforzi non sono stato in grado di eliminare da quella che altrimenti sarebbe un'armonia di precisione matematica..

  9. #9
    insomma....nel senso che devi andare a modificare tutta parte di controllo sulla data nel codice js...

  10. #10
    altrimenti guarda questa funzione
    che controlla solo l'esattezza dell'ultima lettera...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.