2013-06-01 29 views
5

Ok, więc umieszczenie preventDefault na przycisku wysyłania działa, aby zatrzymać wysyłanie formularza. Konsekwencją tego jest to, że nie powie użytkownikowi wymaganych pól i po prostu wykona zdarzenie click na przycisku.Połącz jQuery preventDefault i wymagane dane wejściowe formularza

Dodanie funkcji preventDefault do procedury przesyłania powoduje wyświetlenie użytkownikowi wymaganych pól, ale nadal wywołuje zdarzenie kliknięcia powiązane z przyciskiem.

Potrzebuję obu.

<form action="" method="post"> 
    <input type="text" class="class" id="id" name="name" required="required" /> 
</form> 

Teraz JS:

$("button").click(function(event){ 
    event.preventDefault(); 
    //performs function 
}); 

To będzie ognia zdarzenie kliknięcia, niezależnie od wymaganego wkładu formularza.

$("form").submit(function(event){ 
    event.preventDefault(); 
}); 
$("button").click(function(){ 
    //performs function 
}); 

Spowoduje to wyświetlenie użytkownikowi wymaganego komunikatu, ale nadal będzie działał przycisk Wyślij. Jak zrobić oba? Spojrzałem na kilka innych pytań SO można znaleźć na ten temat, ale wydaje się, że większość można odpowiedzieć, dodając preventDefault do form.submit.

+0

Spróbuj to '$ ("Form") przedstawia (function() {zdarzeń return false; });.' –

Odpowiedz

4

Tak naprawdę starałem się zrobić dwie rzeczy, gdy potrzebowałem tylko jednego.

Nie potrzebowałem funkcji button.click, ponieważ domyślnie przesyła formularz. Potrzebowałem tylko wstawić funkcję button.click wewnątrz form.submit.

$("form").submit(function(event){ 
    //perform button function 
    return false; 
}); 
+0

tak! teraz wydaje się to tak oczywiste, dzięki! :) – andrei

0

Ręcznie podpalić zgłoszenie.

$("button").click(function(event) { 
    event.preventDefault(); 

    $('form').submit(); 
});