Originariamente inviato da Xinod
scusa ma secondo te perche' ti ho consigliato di spostare tutto nell' onsubmit del form?
perche' altrimenti il form non funziona senza supporto a javascript

il submit resta un submit
il form diventa
<form ... onsubmit="accesso();return false">
Però così non va bene, perchè quando tu clicchi sul pulsante di invio del form lui ti esegue sia il form che le funzioni nell'onsubmit.
Mi spiego meglio:

<form action="pagina.php" method="POST" onsubmit="accesso();return false;">

Se io ho una cosa del genere e clicco sul pulsante per inviarlo lui carica la pagina "pagina.php" ed esegue le funzioni onsubmit. Non riesco quindi a ritardare l'esecuzione del form perchè il setTimeout è all'interno della funzione accesso(); mentre il riferimento alla nuova pagina da caricare è nell'attributo ACTION che, invece, viene eseguito immediatamente al click sul pulsante. In pratica in questa maniera mi eseguirebbe il form due volte: una subito e una dopo il numero di secondi impostati e dopo aver eseguito tutta la funzione accesso().

La maniera ottimale per risolvere è avere un pulsante (o un link) che non faccia il submit del form ma che esegua la funzione accesso() la quale, a sua volta, farà il submit del form.

Poi non so se dipende dal tipo di funzione utilizzata, come ti ho detto non sono espertissimo di javascript però se, ad esempio, io nell'onsubmit mettessi un alert() o un confirm() allora effettivamente non mi fa andare avanti finchè non clicco. Ma nello script che ho fatto io, con le funzioni che ho utilizzato lui esegue l'onsubmit mentre carica anche la pagina. Tutto qui.

EDIT: domando scusa... ho riprovato proprio adesso nel modo che hai detto tu ed effettivamente funziona.
Allora davvero non so che cavolo di pasticci facevo ieri quando non mi andava...
Comunque ti ringrazio delle ulteriori spiegazioni.