2011-11-08 19 views
88

Mam formularz, który ma przycisk, który przesyła formularz. Muszę coś zrobić, zanim zgłoszenie się stanie. Próbowałem robić onClick na tym przycisku, ale dzieje się to po przesłaniu.Jak zrobić coś przed przesłaniem?

Nie mogę udostępnić kodu, ale ogólnie, co powinienem zrobić w jQuery lub JS, aby sobie z tym poradzić?

+6

* kaszel * [jsFiddle przykład] (http://jsfiddle.net/XVAPa/) * * kaszlu –

+1

@Brad Christie, jeśli tylko mógłbym zaakceptować komentarz jako odpowiedź. Dzięki bardzo pomocne. – Jimmy

+1

Nienawidzę tego, gdy stackover zamyka pytanie. można obsługiwać za pomocą następujących czynności zdarzeń, które uruchamiają w następnym momentu tuż przed złożeniem postać: 1- onmouseover 2- onMouseMove 3- onmousedown 4- onfocus 5- onmouseup 6- onclick 7- onsubmit –

Odpowiedz

138

Jeśli masz formularz jako takie:

<form id="myform"> 
... 
</form> 

Można użyć następującego kodu jQuery coś zrobić przed przesłaniem formularza:

$('#myform').submit(function() { 
    // DO STUFF... 
    return true; // return false to cancel form action 
}); 
+1

Jestem mając kłopoty z wykorzystaniem tego dla pętli, które muszą być zakończone przed przesłaniem. Jakieś sugestie? – Smilyan

+0

Masz jakiś kod do przejrzenia? Nie jestem pewien, czy rozumiem problem. –

+2

Dlaczego jest zawijany w pustym wywołaniu funkcji? Czy funkcja 'submit' nie powinna być w stanie powiązać bezpośrednio z' $ ('# form') 'bez otaczającej pustej funkcji? EDYCJA: [dokumenty sugerują, że otaczające wywołanie funkcji nie jest potrzebne] (https://api.jquery.com/submit/#submit-eventData-handler). – eykanal

4

upewnić przycisk Prześlij nie ma wpisz "submit", ustaw jako przycisk. Następnie użyj zdarzenia onclick, aby wywołać niektóre javascript. Możesz tam robić, co chcesz, zanim opublikujesz swoje dane.

+1

Formularz można przesłać na kilka sposobów, np. wciskając enter w niektórych polach. Wiązanie z kliknięciem jednego przycisku, którego nie można kliknąć, nie jest dobrym pomysłem. Inne odpowiedzi pokazują, w jaki sposób wiążesz 'onsubmit' z * formularza *, który będzie uruchamiany niezależnie od tego, w jaki sposób zostanie przesłany formularz. – Jason

13

Zakładając, że mają postać tak:

<form id="myForm" action="foo.php" method="post"> 
    <input type="text" value="" /> 
    <input type="submit" value="submit form" /> 

</form> 

można podłączyć onsubmit -event z jQuery tak:

$('#myForm').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
}); 

Jeśli return false formularz nie zostanie przedstawiony po funkcja, jeśli zwrócisz wartość true lub nic nie zostanie przesłana jak zwykle.

Aby uzyskać więcej informacji, zobacz numer jQuery documentation.

5

można wykorzystywać onclick wykonać kod JavaScript lub jQuery kod przed złożeniem formy tak:

<script type="text/javascript"> 
    beforeSubmit = function(){ 
     if (1 == 1){ 
      //your before submit logic 
     }   
     $("#formid").submit();    
    } 
</script> 
<input type="button" value="Click" onclick="beforeSubmit();" /> 
+14

Ale to nie działa, gdy formularz zawiera np. pole wejściowe, w którym użytkownik naciska klawisz powrotu, który uruchamia zdarzenie submit. Zazwyczaj lepiej jest dołączać bezpośrednio do zdarzenia przesyłania, aby można było upewnić się, że zostanie wywołane bez względu na to, w jaki sposób użytkownik wysłał zgłoszenie. – acme

+2

Ansyori

Powiązane problemy