• User

    [javascript] problema con checkbox funzionante solamente al secondo "tentativo"

    Ho un probelma con un codice javascript associato a un checkbox

    Se inizialmente il checkbox non è selzionato nessun problema, funziona tutto a meraviglia, se invece ha l'attributo checked settato a checked:
    -la visualizzazione iniziale è corretta
    -quando deseleziono il checkbox i capi day[day], day[month] e day[year] vengono correttamente modificati, mentre time e type[] rimangono come se il checkbox fosse selezionato

    • se riseleziono la visualizzazione è esatta
    • se deseleziono nuovamente la visualizzazione è esatta

    Ecco il codice, spero che possiate aiutarmi!!

    function NoScad(){
    
        ElCheck=document.getElementById('senzaScad');
        if(ElCheck.checked==true){
            vDay="00";
            vMonth="00";
            vYear="0000";
            incombente=1;
            stato=true;
            ora="00:00";
            tipo="hidden";
        }
        else{
            var data = new Date();
            vDay=data.getDate();
            if (vDay < 10) vDay = "0" + vDay;
            vMonth=data.getMonth()+1;
            if (vMonth < 10) vMonth = "0" + vMonth;
            vYear=data.getFullYear();
            incombente=0;
            stato=false;
            tipo="text";
        }
    
        arrCaselleInput = document.getElementsByTagName("input");
        for (i = 0; i < arrCaselleInput.length; i++)
        {
            switch (arrCaselleInput*.name) 
            {  
                case "day[day]":
                arrCaselleInput*.type = tipo;
                arrCaselleInput*.value = vDay;
                
                  break;
                case "day[month]":
                arrCaselleInput*.type = tipo;
                arrCaselleInput*.value = vMonth;
                
                  break;
                case "day[year]":
                arrCaselleInput*.type = tipo;
                arrCaselleInput*.value = vYear;
                
                  break;
                case "time":
                arrCaselleInput*.type = tipo;
                arrCaselleInput*.value = ora;
                
                  break;
            }
        }
        
        // se selezionato senza scadenza automaticamente incombente
        arrSelect = parent.document.getElementsByTagName("SELECT");
        for (i = 0; i < arrSelect.length; i++)
        {
            switch (arrSelect*.name) 
            {  
                case "type[]":
                    arrSelect*.disabled = stato;
                    arrSelect*.value = incombente;
                    
                break;
    
            }
        }
    
        
    }
    

  • User

    Ecco qui la pagina con il mio problema:
    nuvolacoccola.altervista.org/prova.html

    Quando deseleziono la checkbox la prima volta la select rimane bloccata, riseleziono e rideseleziono e funziona

    di seguito tutto il codice

    <script type="text/javascript">
    function NoScad(){
    
        ElCheck=document.getElementById('senzaScad');
        if(ElCheck.checked){
            vDay="00";
            vMonth="00";
            vYear="0000";
            incombente=1;
            stato=true;
            ora="00:00";
            tipo="hidden";
        }
        else{
            var data = new Date();
            vDay=data.getDate();
            if (vDay < 10) vDay = "0" + vDay;
            vMonth=data.getMonth()+1;
            if (vMonth < 10) vMonth = "0" + vMonth;
            vYear=data.getFullYear();
            incombente=0;
            stato=false;
            tipo="text";
        }
    
        arrCaselleInput = document.getElementsByTagName("input");
        for (i = 0; i < arrCaselleInput.length; i++)
        {
            switch (arrCaselleInput*.name) 
            {  
                case "day[day]":
                arrCaselleInput*.type = tipo;
                arrCaselleInput*.value = vDay;
                
                  break;
                case "day[month]":
                arrCaselleInput*.type = tipo;
                arrCaselleInput*.value = vMonth;
                
                  break;
                case "day[year]":
                arrCaselleInput*.type = tipo;
                arrCaselleInput*.value = vYear;
                
                  break;
                case "time":
                arrCaselleInput*.type = tipo;
                arrCaselleInput*.value = ora;
                
                  break;
            }
        }
        
        // se selezionato senza scadenza automaticamente incombente
        arrSelect = parent.document.getElementsByTagName("select");
        for (i = 0; i < arrSelect.length; i++)
        {
            switch (arrSelect*.name) 
            {  
                case "type[]":
                    arrSelect*.disabled = stato;
                    arrSelect*.value = incombente;
                    
                break;
    
            }
        }
    
        
    }
    </script>
    
    <select name="type[]" id="type[]" disabled="true">
    <option value="">Seleziona</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    </select>
    <input type="checkbox" name="senzaScad" id="senzaScad" value="1" onchange="NoScad();" checked="checked"/>
    <input type="text" name="day[day]" id="day[day]" />
    <input type="text" name="day[month]" id="day[month]" />
    <input type="text" name="day[year]" id="day[year]" />
    <input type="text" name="time" id="time" />
    ```Nessuno può aiutarmi, please?

  • User

    Alla fine il problema era proprio che non era inizializzata la variabile ora nel ciclo else