2012-04-15 8 views
0

Ich habe den folgenden Code für die Einreichung der Formulare:den Benutzer für 2 Sekunden vor dem Absenden des Formulars

$('form').submit(function() { 
    ... 
} 

Ich mag würde für etwa 2 Sekunden, um den Benutzer warten, vor dem Betreten dieses Ereignis vor. Möglich? Vielleicht ein Vorab-Event?

Danke.

+0

Was meinst du mit "warte den Benutzer"? Sie möchten die Formularübertragung für zwei Sekunden verschieben und dann absenden? –

+0

Ja, ich möchte zwei Sekunden warten, bevor ich mich einschicke. – Bronzato

+0

Ja, es ist möglich, aber ich bin neugierig ** warum ** Sie wollen es tun. Scheint völlig unnötig - und möglicherweise verwirrend für den Benutzer - für mich. –

Antwort

1

Versuchen mit:

$('form').submit(function (e) { 
    setTimeout(function() { 
    $(this).submit(); 
    }, 2000); 
    e.preventDefault(); 
} 

Mit e.preventDefault() abbrechen Sie das Standardverhalten der Form (einreichen, zum Beispiel). Dann erstellen Sie eine Zeitüberschreitung, die die tatsächliche Übermittlung ausführt.

Vielleicht sollten Sie eine Markierung setzen, weil die Verwendung von .submit() das Ereignis "submit" auslösen kann, das Sie gerade hören. Wenn ja, versuchen Sie mit:

var attach_timeout = true; 

$('form').submit(function (e) { 
    if (attach_timeout) { 
    setTimeout(function() { 
     $(this).submit(); 
    }, 2000); 
    attach_timeout = false; 
    e.preventDefault(); 
    } 
} 
+1

Rufen Sie '.submit()' auf dem tatsächlichen Formular auf, nicht ein jQuery-Objekt, das es enthält, und Sie werden keine über jQuery angehängten Submit-Event-Handler auslösen. –

Verwandte Themen