Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    funzione bisestile valore da restituire

    Posto il codice che così si comprende subito il problema:

    codice:
    function bisestile (year)  {
            var cond=false;
            if (year % 4 != 0)
            {
             cond=true;
            }
            return cond;
            }
    Questa è la funzione, mi sembra corretta, ecco dove la richiamo:

    codice:
    //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.selectedIndex.focus();
             return false;
           }


    Questo controllo si attiva quando si selezionano giorno, mese, anno da tre select.
    Non funziona e vorrei sapere dove sbaglio, ciao

    Holden

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Sensa tutto lo script... ma forse e' perche' tenti di applicare un metodo ad una proprieta'... togli la parte in rosso


    document.modulo.giorno.selectedIndex.focus();

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Allora posto tutto il codice dello script:

    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 trovare l'errore che però dovrebbe essere sui controlli delle date dal momento che gli altri controlli funzionavano prima che li scrivessi.

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    la funzione corretta per il bisestile:

    function bisestile(anno){
    var a=anno;
    var p=a.charAt(a.length-2);
    var u=a.charAt(a.length-1);
    if((p%2==0 && (u==0||u==4||u==8))||(p%2!=0 &&(u==2||u==6))) return true;
    else return false;
    }


    da: http://work.wedev.it/dennis/2004/WDL_time.js

  5. #5
    Non funziona, credo che la funzione da me usata era corretta, l'errore non penso sia nella funzione bisestile ma sul resto dello script, almeno penso,


    Holden

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    Originariamente inviato da holden_1972
    Non funziona, credo che la funzione da me usata era corretta, l'errore non penso sia nella funzione bisestile ma sul resto dello script, almeno penso,


    Holden
    se ti interessa l'anno bisestile in generale, e non vuoi usare lo script postato, puoi vedere qui:


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.