- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- [javascript] problema con checkbox funzionante solamente al secondo "tentativo"
-
[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; } } }
-
Ecco qui la pagina con il mio problema:
nuvolacoccola.altervista.org/prova.htmlQuando 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?
-
Alla fine il problema era proprio che non era inizializzata la variabile ora nel ciclo else