Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155

    Problemi con i tag select

    Ciao a tutti!!!
    Sono nuovo del foum, ma ho già un problema:
    vorrei fare una pagina dove sono presenti 3 select per inserire la data di nascita, e fin qui nessun problema. Però volevo fare in modo che cambiando il mese cambia anche il numero massimo di giorni, ad esempio se seleziono febbraio non posso mettere 30 come giorno.

    Nella pagina è presente un form con id=data, con all'interno i tre select di nome giorno, mese, anno.

    Nella pagina inserisco il collegamento al file con la funzione in javascript, e poi dentro al tag body scrivo onLoad="giorni()" (così si chiama la funzione).
    Quando provo la pagina IE mi da errore nella riga del body, dove chiamo la funzione, e come errore "Previsto oggetto". Che significa?????????? Come posso risolvere???????


    Nel frattemo ho dato sfogo alla mia fantasia (unita a qualche nozione di javascript) e ho scritto questo codice:

    function giorni() {

    var ob_anno=document.getElementById("anno"); //Prendo gli oggetti select anno
    var ob_mese=document.getElementById("mese"); //mese
    var ob_giorno=document.getElementById("giorno"); //e giorno

    var anno=ob_anno.options[ob_anno.selectedIndex].value); //prendo il valore dell'anno
    var mese=ob_mese.options[ob_mese.selectedIndex].value); //e del mese selezionati

    var maxgiorni; //dichiaro la variabile che conterrà il numero massimo di giorni
    if(mese==9||mese==6||mese==11||mese==4) maxgiorni=30; //mesi con 30 giorni
    if(mese==1||mese==3||mese==5||mese==7||mese==8||mese ==10||mese==12)maxgiorni=31; //mesi con 31
    if(mese==2){ //febbraio
    maxgiorni=28; //di solito con 28 giorni
    if(anno%4==0 && anno%1000!=0) maxgiormi==29; //se l'anno è bisestile 29
    }

    for (i=maxgiorni;i<=31;i++) //x tutti i giorni non esistenti
    le option vengono disabilitate //AIUTOOOO!!!!!!!

    }



    mi servirebbe un po d'aiuto per completarlo e risolvere i miei problemi....
    GRAZIE A TUTTIIIIIIIII!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  2. #2
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Ragazzi vi prego rispondetemi per favore è importante!!!
    Non riesco a venirne a capo!!!

    Il fatto che non includeva lo script l'ho risolto (grazie per l'aiuto), ma mi serve una mano per riuscire a collegare i tre select

    PER FAVORE AIUTATEMI!!!

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    /*'--------------------------------------------------------------------------
    'Restituisce vero o falso a seconda che l'anno passato come argomento
    'sia bisestile
    '--------------------------------------------------------------------------*/
    function IsLeapYear(aYear)
    {
    	if ((aYear % 4 == 0 && aYear % 100 != 0) || (aYear % 400 == 0) )
    		return true;
    	else
    		return false;
    }
    
    /*'-----------------------------------------------------------------------
    'Restituisce il numero di giorni del mese. Ha come argomenti Anno e mese
    '-----------------------------------------------------------------------*/
    function DaysInMonth(aYear, aMonth)
    {
    	aYear = parseInt(aYear, 10);
    	aMonth = parseInt(aMonth, 10);
    	switch (aMonth)
    	{
    		case 4:
    		case 6:
    		case 9:
    		case 11:
    			return 30;
    			
    		case 1:
    		case 3:
    		case 5:
    		case 7:
    		case 8:
    		case 10:
    		case 12:
    			return 31;
    			
    		case 2:
    			if(IsLeapYear(aYear)) return 29; else return 28;
    	}
    
    }
    
    /*---------------------------------------------------------------
    Aggiunge un elemento ad una listbox
    ---------------------------------------------------------------*/
    function lista_push(lista, testo, valore)
    {
    	lista.options[lista.options.length] = new Option(testo, valore);
    }
    
    /*---------------------------------------------------------------
    Cancella tutti gli elementi di una listbox
    ---------------------------------------------------------------*/
    function lista_cancella(lista)
    {
    	var v1 = lista.options;
    	for (var i = v1.length - 1; i >= 0; i--) lista.remove(i);
    }
    
    window.onload = function()
        {
            var sa = document.getElementById("Select_anno");
            lista_push(sa, "", "");
            for(var anno = 1900; anno <= 2100; anno++)
                lista_push(sa, anno, anno);
            
            sa.onchange = function(){popola_giorni(sa.value, sm.value)};
            
            var sm = document.getElementById("Select_mese");
            lista_push(sm, "", "");
            for(var mese = 1; mese <= 12; mese++)
                lista_push(sm, mese, mese);
            
            sm.onchange = function(){popola_giorni(sa.value, sm.value)};
            
        };
    
    function popola_giorni(anno, mese)
    {
        var sg = document.getElementById("Select_giorni");
        lista_cancella(sg);
        if(anno == "" || mese == "") return;
        lista_push(sg, "", "");
        for(var i = 1; i <= DaysInMonth(anno, mese); i++)
            lista_push(sg, i, i);
    }
    
    // ]]>
    </script>
    
    </head>
    <body>
        <select id="Select_anno" ></select>
        <select id="Select_mese" ></select>
        <select id="Select_giorni" ></select>
    </body>
    </html>
    Pietro

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 © 2026 vBulletin Solutions, Inc. All rights reserved.