controlli per la data

holden72

Nuovo Utente
17 Ott 2004
1
0
0
Allora, ho 3 select, una è per il giorno, una per il mese e l'ultima per l'anno, voglio fare dei controlli in javascript perché siano validi i valori, questo è lo script completo:

Codice:
<script language="javascript">

      function bisestile (year)  {


        if ((year % 4) == 0)
        {
         return true
        }
        else
        {
         return false
        }
        }

      function Modulo() {

     // Variabili associate ai campi del modulo
     var nome = document.modulo.nome.value;
     var cod_cliente = document.modulo.cod_cliente.value.length;
     var cod_cliente2 = document.modulo.cod_cliente.value;
     var giorno = document.modulo.giorno.options[document.modulo.giorno.selectedIndex].value;
     var mese = document.modulo.mese.options[document.modulo.mese.selectedIndex].value;
     var anno = document.modulo.anno.options[document.modulo.anno.selectedIndex].value;
      //Effettua il controllo sul campo NOME
        if (((nome == "") || (nome == "undefined")) &&
           ((cod_cliente == "") || (cod_cliente == "undefined")))
        {
           alert("Devi riempire almeno un campo");
           document.modulo.nome.focus();
           return false;
        }
        // Effettua controllo numericità codice
       else if (isNaN(cod_cliente2))
        {
        alert("Il codice deve essere numerico");
           document.modulo.cod_cliente.focus();
           return false;
        }
      // Effettua controllo lunghezza codice
       else if (cod_cliente < 3)
        {
        alert("Il codice deve essere di 3 cifre");
           document.modulo.cod_cliente.focus();
           return false;
        }
       //Effettua il controllo sulla data
        else if ((document.modulo.giorno.selectedIndex == 31)
             && ((document.modulo.mese.selectedIndex == 9)
             || (document.modulo.mese.selectedIndex == 11)
             || (document.modulo.mese.selectedIndex == 6)
             || (document.modulo.mese.selectedIndex == 4)))
         {
         alert("Il mese selezionato non ha più di 30 giorni.");
         document.modulo.giorno.focus();
         return false;
       }
       //Effettua il controllo sull'anno bisestile
       else if (((document.modulo.giorno.selectedIndex > 28) &&
               (document.modulo.mese.selectedIndex == 2) &&
               (!(bisestile(document.modulo.anno.selectedIndex))))
       {
       alert("L'anno non è bisestile, febbraio ha solo 28 giorni.");
         document.modulo.giorno.focus();
         return false;
       }


      //INVIA IL MODULO
       else {
           document.modulo.action = "save_bolla.php";
           document.modulo.submit();
       }
}
</script>

Non riesco a capire dov'è l'errore, certamente non sui controlli del nome e del codice, visto che funzionavano prima che mettessi i controlli sulla data,

Holden
 
Prova a cambiare qui:

else if ((document.modulo.giorno.selectedIndex == 31)
&& ((document.modulo.mese.selectedIndex == 9)
|| (document.modulo.mese.selectedIndex == 11)
|| (document.modulo.mese.selectedIndex == 6)
|| (document.modulo.mese.selectedIndex == 4)))

Spiegazione: con quelle due parentesi, dai priorità al connettivo || e non a &&,
quindi vedi un pò tu, eliminale o cambia ordine di controllo!

Ciao.
 

Discussioni simili