Questo però già funziona un po' più come te lo aspetti:
codice:
<form id="form" name="form" onsubmit="alert(h);">
<input value="enzo" type="text" name="input" id="input" />
<input type="submit" />
</form>
<SCRIPT type="text/javascript">
var h=document.form.input.value;
</SCRIPT>
e questo ancor più funziona come te lo aspetti:
codice:
<form id="form" name="form" onsubmit="alert(document.form.input.value);">
<input value="enzo" type="text" name="input" id="input" />
<input type="submit" />
</form>
e a dire la verità, anche il tuo funziona: assegna un Valore alla variabile h (quando?) nel momento che la pagina viene caricata/analizzata dal Browser; e il Valore di VALUE di quella textbox è vuoto "alla nascita".
Rilevavi l' equivalente di value="" e quello rimaneva per h
Per quanto possiamo pensare di JavaScript come un linguaggio dinamico, document.form.input.value non ti vuole tenere in costante e vivo contatto con quell' Attributo, ma lo "fotografa" una-tantum quando viene lanciato; o ... ri-lanciato. Sulla base di quest' ultima osservazione, potrei anche conformare il tuo modello alle tue aspettative, con l' ausilio di un Timer:
codice:
<form id="form" name="form" onsubmit="alert(h);">
<input type="text" name="input" id="input" />
<input type="submit" />
</form>
<SCRIPT type="text/javascript">
setInterval('var h=document.form.input.value;', 100);
</SCRIPT>
forse in miglior sintassi così:
codice:
<SCRIPT type="text/javascript">
var h; //dichiarazione di variabile indefinita
setInterval('h=document.form.input.value;', 100);
</SCRIPT>
Il Valore di VALUE viene verificato ogni decimo di secondo, ed assegnato come Valore alla var h
In JavaScript possiamo avere due temporizzatori: setTimeout e setInterval che si tarano in millisecondi (3000 = 3 sec.).