Ho cercato di evolvere il codice in quest'altra forma:
[HTML]<html>
<head>
<script type="text/javascript" src="controllaform.js"></script>
<script type="text/javascript">
var timeout2 = 10;//3600 secondi
function controlla_validita2()
{
timeout2--;
if(timeout2 >= 0)
{
st = setTimeout(controlla_validita2,1000);
secondi_differenza = timeout2;
differenza = new Array();
differenza['secondi_globali'] = secondi_differenza;
differenza['g'] = Math.ceil(secondi_differenza/(606024));
differenza['o'] = Math.ceil((secondi_differenza-(differenza['g'](606024)))/(6060));
if(differenza['o']<0){differenza['o'] += 24; differenza['g']--;}
differenza['m'] = Math.ceil((secondi_differenza-((differenza['o'](6060))+(differenza['g'](606024))))/60);
if(differenza['m']<0){differenza['m'] += 60; differenza['o']--;}
differenza['s'] = Math.ceil(secondi_differenza-((differenza['m'](60)+(differenza['o'](6060))+(differenza['g'](6060*24)))));
if(differenza['s']<0){differenza['s'] += 60; differenza['m']--;}
if(differenza['m']<0){differenza['m'] += 60; differenza['o']--;}
if(differenza['o']<0){differenza['o'] += 24; differenza['g']--;}
differenza['o'] = (differenza['o']<10)?'0'+differenza['o']:differenza['o'];
differenza['m'] = (differenza['m']<10)?'0'+differenza['m']:differenza['m'];
differenza['s'] = (differenza['s']<10)?'0'+differenza['s']:differenza['s'];
if(timeout2 >= 0) {
document.getElementById('timeout').innerHTML = differenza['o']+':'+differenza['m']+':'+differenza['s'];
}
}
else
{
document.getElementById('pulsante_form').disabled = 'disabled';
//disabilita_submit_button();
}
return false;
}
</script>
<script type="text/javascript">
function cambia_stato() {
if(document.mia_form.checkbox_pilota.checked)
document.mia_form.pulsante_form.disabled="";
else
document.mia_form.pulsante_form.disabled="disabled";
return false;
}
function disabilita_submit_button() {
if (controlla_validita2() && cambia_stato()) {
document.mia_form.pulsante_form.disabled='';
} else {
document.mia_form.pulsante_form.disabled="disabled";
}
}
</script>
</head>
<body>
<form method="post" id="mia_form" name="mia_form" action="" onSubmit="return ChkFrm(this)">
<input type="checkbox" name="checkbox_pilota" onClick="cambia_stato()" id='checkbox_pilota' /> Checkbox pilota</label><br />
<!-- altri campi da compilare... -->
<script type="text/javascript">
<!--
document.write("<p><input name="pulsante_form" id="pulsante_form" value="Invia" type="submit" disabled="disabled" onClick="disabilita_submit_button()" /><span id='timeout'></span></p>");
controlla_validita2();
// -->
</script>
</form>
</body>
</html>[/HTML]
Motivazioni: ho cambiato il codice oltre ad aggiungere la funzione disabilita_submit_button() il cui scopo dovrebbe abilitare il submit solo se entrambi i predicati fossero veri.
Tuttavia nonostante il sincronismo, dopo che è scaduto il timeout il checkbox pilota continua ad agire sul pulsante di submit.