Onsubmit() è un gestore di evento supportato solo dall'oggetto form. Se vuoi settare un campo hidden del form prima dell'invio, ti basta codificare il form in questo modo:
codice:
<form id="modulo" method="post" onsubmit="Imposta();">
...Campi del form...
<input type="hidden" id="nascosto" value="">
<input type="submit" value="Invia">
</form>
Codice della funzione JavaScript:
function Imposta() {
document.getElementById("nascosto").value = VALORE DA SETTARE;
}
Alcune precisazioni. Ho usato una funzione perché così puoi "tenere pulito" il codice HTML e allo stesso tempo puoi "complicare" il sistema di settaggio del valore dell'hidden con istruzioni if...else, ecc. (nell'esempio lo setta fisso).
Ho usato il metodo di accesso all'oggetto hidden stabilito dal DOM standard W3C (document.getElementById()). In questo modo, previa associazione dell'attributo id al tuo campo hidden, puoi evitare di "passare" per l'oggetto form come con la "vecchia" sintassi:
codice:
document.NOMEFORM.NOMECAMPO.value
Infine, due parole sul gestore di evento onsubmit(). Questo gestore, come ho detto prima, è specifico dell'oggetto form e non ha senso se inserito in pulsanti, campi di testo, ecc.
Inoltre, il codice indicato per l'onsubmit() viene eseguito un attimo prima che si verifichi il submit del form.
In altre parole, quando un utente clicca sul pulsante submit, prima viene eseguita la funzione indicata da onsubmit(), e poi viene spedito il form.