Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Controllo CODICE FISCALE problematico (JAVA)
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
Simona77
Mortale devoto
Mortale devoto


Registrato: 04/02/08 11:07
Messaggi: 9

MessaggioInviato: 11 Feb 2008 14:13    Oggetto: Controllo CODICE FISCALE problematico (JAVA) Rispondi citando

Rieccomi con un nuovo quesito che mi crea non pochi grattacapi in un modulo registrazione utente. Per farla breve:

1) Campo CODICE FISCALE:
Codice:
<td width="26%" class="modulo">Codice Fiscale:</td>
<td width="74%" class="plainTxt"><input name="cfisc" type="text" class="input" id="ordine" size="30" /></td>


2) Semplice controllo in Java se il campo è vuoto:
Codice:
<script language="JavaScript" type="text/JavaScript">
function checkSubmit()
{

if (window.document.forma.cfisc.value == "")
   {
      alert("Necessario inserire il codice fiscale!")
      document.forma.cfisc.focus();
      return false;
     }
   return true;
}
</script>


Voglio rendere il controllo più efficace inserendo un controllo sulla validità.

3) Script controllo validità:
Codice:
function controllaCF(cf)
{
        var validi, i, s, set1, set2, setpari, setdisp;
        if( cf == '' )  return '';
        cf = cf.toUpperCase();
        if( cf.length != 16 )
                return "La lunghezza del codice fiscale non è\n"
                +"corretta: il codice fiscale dovrebbe essere lungo\n"
                +"esattamente 16 caratteri.\n";
        validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        for( i = 0; i < 16; i++ ){
                if( validi.indexOf( cf.charAt(i) ) == -1 )
                        return "Il codice fiscale contiene un carattere non valido `" +
                                cf.charAt(i) +
                                "'.\nI caratteri validi sono le lettere e le cifre.\n";
        }
        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 "Il codice fiscale non è corretto:\n"+
                        "il codice di controllo non corrisponde.\n";
        return "";
}


Come posso fondere script 2 e script 3 per avere un controllo java ed completo unico?

Baci,
Simo Wink


[Ho inserito io i tag code. Horus]
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 11 Feb 2008 15:50    Oggetto: Re: Controllo CODICE FISCALE problematico (JAVA) Rispondi citando

modifica tutte le return della controllaCF(cf) per farti restituire false:
metti
Codice:
return false;


e poi fai

Codice:
<script language="JavaScript" type="text/JavaScript">
function checkSubmit()
{
  if (controllaCF(document.forma.cfisc.value)==false)
 {
    return false;
 } else {
    return true;
  }
}
</script>
Top
Profilo Invia messaggio privato HomePage
Simona77
Mortale devoto
Mortale devoto


Registrato: 04/02/08 11:07
Messaggi: 9

MessaggioInviato: 11 Feb 2008 18:14    Oggetto: Rispondi citando

Grazie per la prontissima risposta.

Ho pensato di risolvere così, ditemi se è corretto (ma rimane un problema che illustro in fondo);

1) creato campi Ragione Sociale, Codice Fiscale e Partita IVA
Codice:
<td width="26%" class="modulo">Ragione Sociale:</td>
<td width="74%" class="plainTxt"><input name="compaby" type="text" class="input" id="ordine" size="30" /></td>

<td width="26%" class="modulo">Codice Fiscale:</td>
<td width="74%" class="plainTxt"><input name="cfisc" type="text" class="input" id="ordine" size="30" /></td>

<td width="26%" class="modulo">Partita IVA:</td>
<td width="74%" class="plainTxt"><input name="cfisc" type="text" class="input" id="ordine" size="30" /></td>


2) creata una funzione in Java per il controllo se privato o azienda e relativo CF e PIVA
Codice:
function vm_isCF(cf)
      {
         var validi, i, s, set1, set2, setpari, setdisp;
         if( cf == "" )  return "";
         cf = cf.toUpperCase();
         if( cf.length != 16 )
            return false;
         validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
         for( i = 0; i < 16; i++ ){
            if( validi.indexOf( cf.charAt(i) ) == -1 )
               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;
         return true;
      }

function vm_isPartitaIva(piva) {
         if (piva.length!=11) {
            return false;
         }
         var contributo = new Array(0,2,4,6,8,1,3,5,7,9);
         var somma = 0;
         for (i=0;i<11;i++) {
            if (i%2==0) {
               somma += parseInt(piva.charAt(i));
            } else {
               var cifra = parseInt(piva.charAt(i));
               somma += contributo[cifra];
            }
         }
         if (somma%10==0) return true;
         else return false;
      }


3) Controllo dei campi inseriti
Codice:
if (window.document.forma.company.value=="") {
               if (window.document.forma.cfisc.value=="") {
                  alert("Privato: inserire il proprio codice fiscale.");
                  return false;
               } else {
                  window.document.forma.cfisc.value = window.document.forma.cfisc.value.toUpperCase();
                  if (!vm_isCF(window.document.forma.cfisc.value)) {
                     alert("Privato: codice fiscale non corretto; controllare.");
                     return false;
                  }
               }
            } else {
               if (window.document.forma.cfisc.value=="" || window.document.forma.piva.value=="") {
                  alert("Azienda: inserire sia partita IVA che codice fiscale.");
                  return false;
               } else
               
               
               {   window.document.forma.piva.value = window.document.forma.piva.value.toUpperCase();
                  if (!vm_isPartitaIva(window.document.forma.piva.value)) {
                     alert("Azienda: partita IVA non corretta; controllare.");
                     return false;
                  }
                  
                  
                  if (!vm_isPartitaIva(window.document.forma.piva.value) && !vm_isCF(window.document.forma.cfisc.value)) {
                     alert("Azienda: codice fiscale non corretto; controllare.");
                     return false;
                  }
               }
            }


PROBLEMA:

se si tratta di un privato tutto ok, ma se si tratta di un'azienda il controllo me lo fa solo sulla partita IVA nel senso che, se inserisco il codice fiscale errato dell'azienda ma la partita IVA esatta non vengo avvisata che il codice fiscale inserito è sbagaliato.

Dove ho sbagliato? Devo aggiungere qualche "else" in più?

Baci,
Simo

Ho inserito io i tag code. Horus
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 12 Feb 2008 11:53    Oggetto: Rispondi citando

Codice:
if (!vm_isPartitaIva(window.document.forma.piva.value) && !vm_isCF(window.document.forma.cfisc.value)) {
  alert("Azienda: codice fiscale non corretto; controllare.");
return false;


credo sia sbagliato, forse volevi fare

Codice:
if (!vm_isCF(window.document.forma.cfisc.value)) {
alert("Azienda: codice fiscale non corretto; controllare.");
return false;


Ciao

(p.s. ... usa i tag [code] per incollare del codice, si legge meglio! Smile )
Top
Profilo Invia messaggio privato HomePage
Simona77
Mortale devoto
Mortale devoto


Registrato: 04/02/08 11:07
Messaggi: 9

MessaggioInviato: 13 Feb 2008 20:30    Oggetto: Rispondi citando

Grazie della consueta e pregevole risposta.

Dai prossimi post utilizzerò i tag code...chiedo scusa per la "disattenzione" Embarassed

Baci,
Simo
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 14 Feb 2008 08:55    Oggetto: Rispondi

Simona77 ha scritto:
Dai prossimi post utilizzerò i tag code...chiedo scusa per la "disattenzione" Embarassed

Figurati, intanto ho aggiunto nei messaggi precedenti i tag code così chi leggerà in futuro sarà facilitato.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi