problema con checkbox funzionante solamente al secondo "tentativo"

ali7.p

Utente Attivo
6 Lug 2006
52
0
6
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
:confused:

Ecco il codice, spero che possiate aiutarmi!!

Codice:
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[i].name) 
		{  
		    case "day[day]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vDay;
			
		      break;
		    case "day[month]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vMonth;
			
		      break;
			case "day[year]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vYear;
			
		      break;
			case "time":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = ora;
			
		      break;
		}
	}
	
	// se selezionato senza scadenza automaticamente incombente
	arrSelect = parent.document.getElementsByTagName("SELECT");
	for (i = 0; i < arrSelect.length; i++)
	{
		switch (arrSelect[i].name) 
		{  
		    case "type[]":
				arrSelect[i].disabled = stato;
				arrSelect[i].value = incombente;
				
		    break;

		}
	}

	
}
 

micio86

Utente Attivo
Prova

Prova a farti degli alert nei vari cicli e nei vari if per capire i valori che assegni alle variabili e anche quelli di default. Solitamente faccio così anche xkè i valori possono anche cambiare tra i vari browsers. Negli input se checkati fai sempre <input.... checked="checked" />
Tieni conto ke la funzione getElementByTagName ti becca tutti gli input nella pagina mentre getElementByName becca quelli con lo stesso nome (ammesso dal w3c).

Fai un alert(ElCheck.checked) e il primo if fallo così: if(ElCheck.checked) {......
 
Ultima modifica:

ali7.p

Utente Attivo
6 Lug 2006
52
0
6
con if(ElCheck.checked){ non cambia niente

ma l'alert dove devo metterlo? scusa, ma javascript non è proprio il "mio" linguaggio, non ci capisco molto
 

ali7.p

Utente Attivo
6 Lug 2006
52
0
6
alert o non allert non cambia niente (e l'alert non fa niente, no mi stampa nessun messaggio)
 
Ultima modifica:

ali7.p

Utente Attivo
6 Lug 2006
52
0
6
ok, allora... adesso l'alert funziona e il risultato è giusto.
Parto con il checkbox selzionato, quando lo deselesiono l'alert mi dà false ma la select type[] mi rimane sempre disabilitata.
Riselezione, l'alert è true ed è tutto ok, deseleziono l'alert è false e adesso è tutto giusto, con il slect type[] attivo :incazz2:
 

micio86

Utente Attivo
Il problema sarà sicuramente qui:

Codice:
// se selezionato senza scadenza automaticamente incombente
	arrSelect = parent.document.getElementsByTagName("SELECT");
	for (i = 0; i < arrSelect.length; i++)
	{
                alert(arrSelect[i].name);//Fai qui un alert
		switch (arrSelect[i].name) 
		{  
		    case "type[]":
				arrSelect[i].disabled = stato;
				arrSelect[i].value = incombente;
				
		    break;

		}
	}

Sostituiscilo come te l'ho scritto e vedi cosa ti dà l'alert

Poi prova a sostituire il valore di stato scambiando true con false e disabled lo chiami enabled.
Codice:
function NoScad(){

	ElCheck=document.getElementById('senzaScad');
	if(ElCheck.checked){
		vDay="00";
		vMonth="00";
		vYear="0000";
		incombente=1;
		stato=false;
		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=true;
		tipo="text";
	}

	arrCaselleInput = document.getElementsByTagName("input");
	for (i = 0; i < arrCaselleInput.length; i++)
	{
		switch (arrCaselleInput[i].name) 
		{  
		    case "day[day]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vDay;
			
		      break;
		    case "day[month]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vMonth;
			
		      break;
			case "day[year]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vYear;
			
		      break;
			case "time":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = ora;
			
		      break;
		}
	}
	
	// se selezionato senza scadenza automaticamente incombente
	arrSelect = parent.document.getElementsByTagName("SELECT");
	for (i = 0; i < arrSelect.length; i++)
	{
                alert(arrSelect[i].name);
		switch (arrSelect[i].name) 
		{  
		    case "type[]":
				arrSelect[i].enabled = stato;
				arrSelect[i].value = incombente;
				
		    break;

		}
	}

	
}
 
Ultima modifica:

ali7.p

Utente Attivo
6 Lug 2006
52
0
6
facendo così se inizialmente il checkbox è settato la slòect rimane semple disabilitata; se inizialmente il checkbox non è selezionato la select rimane sempre attiva
 

micio86

Utente Attivo
Non capisco a me cambia correttamente...

Uso questo codice e credo ke faccia quello ke vuoi:

Codice:
<script type="text/javascript">
function NoScad(){

	ElCheck=document.getElementById('senzaScad');
	if(ElCheck.checked){
		vDay="00";
		vMonth="00";
		vYear="0000";
		incombente=1;
		stato=false;
		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=true;
		tipo="text";
	}

	arrCaselleInput = document.getElementsByTagName("input");
	for (i = 0; i < arrCaselleInput.length; i++)
	{
		switch (arrCaselleInput[i].name) 
		{  
		    case "day[day]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vDay;
			
		      break;
		    case "day[month]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vMonth;
			
		      break;
			case "day[year]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vYear;
			
		      break;
			case "time":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = ora;
			
		      break;
		}
	}
	
	// se selezionato senza scadenza automaticamente incombente
	arrSelect = parent.document.getElementsByTagName("select");
	for (i = 0; i < arrSelect.length; i++)
	{
		switch (arrSelect[i].name) 
		{  
		    case "type[]":
				arrSelect[i].enabled = stato;
				arrSelect[i].value = incombente;
				
		    break;

		}
	}

	
}
</script>
<input type="checkbox" name="senzaScad" id="senzaScad" value="1" onchange="NoScad();" />
<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" />

<select name="type[]" id="type[]">
<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>
 

ali7.p

Utente Attivo
6 Lug 2006
52
0
6
uhm... intanto, come ti avevo fatto notare prima quando avevo provato la soluzione con enable al posto di disable, la select rimane sempre attiva e invece io voglio che sia disabilitata quando il checkbox è settato...

Io comunque il problema ce l'ho all'inverso, quando inizialmente la checkbox è settata... partendo dalla select non settata funziona tutto bene il codice che avevo postato.
rimetti disable e nel codice della select disabled="true" e vedi che funziona al seocndo tentativo...
 
Ultima modifica:

micio86

Utente Attivo
Bah

Non kiedermi perchè ma ho risolto così:

HTML:
<script type="text/javascript">
function NoScad(bool) {
	if(bool) {
		vDay="00";
		vMonth="00";
		vYear="0000";
		incombente=1;
		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;
		tipo="text";
	}
	// se selezionato senza scadenza automaticamente incombente
	document.frm.type.disabled=bool;
	arrCaselleInput = document.getElementsByTagName("input");

	for (i = 0; i < arrCaselleInput.length; i++) {
		switch (arrCaselleInput[i].name) 
		{  
		    case "day[day]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vDay;
		      break;
		    case "day[month]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vMonth;
		      break;
			case "day[year]":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = vYear;
		      break;
			case "time":
			arrCaselleInput[i].type = tipo;
			arrCaselleInput[i].value = ora;
		      break;
		}
	}
}
</script>
<form name="frm">
<input type="checkbox" name="senzaScad" id="senzaScad" value="1" checked="checked" onclick="NoScad(this.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" />

<select name="type" id="type" disabled>
<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>
</form>
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Problema checkbox checked con valore prelevato da db PHP 1
blips Problema con checkbox multiple PHP 1
P problema con checkbox PHP 5
F Problema urgente con checkbox, array e explode PHP 10
D problema con checkbox e input text PHP 6
G problema checkbox con mdb asp Classic ASP 8
P Problema con CheckBox Javascript 2
F problema con convalida form e checkbox Javascript 1
P [PHP] problema script con checkbox! PHP 0
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
N Problema con position absolute e overflow HTML e CSS 4
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
O problema con query PHP 4
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema con eccessiva nitidezza apertura Camera Raw Photoshop 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 5

Discussioni simili