Sono riuscito a risolvere il problema e se può interessare vi spiego la procedura:
per prima cosa anzichè il tag <input type="submit" value="invia" /> che produce l'invio immediato del form ho messo un più generico <input type="button" value="invia" />
In questa maniera quando io clicco sul pulsante il form non parte e io posso gestire tutto da un onclick che inserisco nel tasto stesso. In pratica il mio pulsante esce così:
<input type="button" onclick="accesso();" value="Invio" />
A questo punto il gioco è fatto, perchè tutto viene gestito direttamente dal javascript, compresa la funzione di invio del form. In pratica la funzione accesso() dovrebbe essere una cosa del genere:
function accesso() {
.
.
.
codice da eseguire
.
.
.
setTimeout(function() {document.nomeform.submit();}, 10000);
return false;
}
In questa maniera posso gestire senza alcun problema il ritardo nell'invio del form e far eseguire tutte le funzioni che mi interessano prima che il form parta.
L'unico difetto di questo metodo è che, a questo punto, l'utente deve PER FORZA cliccare sul pulsante "Invia" per far eseguire il form. Se compila i campi e batte semplicemente il tasto invio sulla tastiera non funzionerà.
Ma se si vuole fare gli sboroni anche questo è facilmente risolvibile: basta inserire in ciascuno dei campi del form (o, eventualmente, solo in quelli che si vuole causino l'invio del form con la pressione del tasto) un evento del tipo onkeypress="tasto(event);"
A questo punto basterà scrivere la funzione tasto() in questo modo:
function tasto(e)
{
if (e.keyCode == 13) {
accesso();
return true;
}
else {
return false;
}
}
In questo modo se alla pressione del tasto viene rilevata la pressione dell'invio, lui esegue la funzione accesso() (che, a sua volta, invierà il form dopo il timeout definito), altrimenti se il tasto premuto è diverso, non fa niente.
Spero di essere stato chiaro e, soprattutto, utile![]()

Rispondi quotando