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
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..
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
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..
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:
la form contiene un campo con il codice(cf), 3 select con la data di nascita(Anno,Mese,Giorno) e il campo sesso(sesso).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; }
Per la creazione, invece devi farla sul server, oppure la fai in ajax, in modo che sembri in locale, anche se non lo è![]()
![]()
![]()
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..
Sto usando il tuo codice, ma purtroppo mi viene restituito questo errore nella visualizzazione della 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..
ma in questa funzione io non utilizzo i metodi del DOM???![]()
![]()
da dove viene quell'errore?
la mia pagina è cosi strutturata:
quindi non capisco perchè ti dia un errore con il getElementByIdcodice:<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>![]()
![]()
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
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..
insomma....nel senso che devi andare a modificare tutta parte di controllo sulla data nel codice js...
altrimenti guarda questa funzione
che controlla solo l'esattezza dell'ultima lettera...