2013-02-24 10 views
7

używam jQuery złożyć moje zmienne formularzy, a im próbuje zapobiec formularz ze złożeniem przez zwykłych sposobów (kliknij Wyślij lub naciśnij przycisk Enter na jedno z pól)Zapobieganie przesyłaniu formularza za pośrednictwem zdarzenia.preventDefault(); nie działa

mam to:

$('#form').submit(function(){ 
    event.preventDefault(); 
}); 

ale nie wydają się działać moja forma jest jeszcze złożenie, przechodząc na stronę process.php ..

+1

Nie wiem jeśli to nadal jest problem, ale miałem to i nie mogłem go naprawić. Okazuje się, że miałem drugi formularz z tym samym identyfikatorem ... Silly me –

+2

Powód, dla którego powyższy kod nie działa, ponieważ nie masz parametru zdarzenia jako części twojego argumentu funkcji callback(), powinien on być funkcją (event) – Madhur

+0

Być może polecisz formularz, zanim będzie dostępny przez DOM. Umieść kod w wywołaniu 'onload' i dodaj argument" zdarzenie "do wywołania zwrotnego dla zdarzenia' submit'. –

Odpowiedz

11

Jeśli jedyną rzeczą, którą musisz zrobić, to w celu zapobieżenia domyślną akcję, można dostarczać false zamiast funkcji:

$('#form').submit(false); 
+0

niesamowite. tak prosty. dzięki! – BrownChiLD

8

spróbować return false zamiast event.preventDefault() lub zaakceptować event jako parametr swojej funkcji.

$('#form').submit(function(event){ 
    event.preventDefault(); 
}); 
+11

Na razie ani 'return false', ani' event.preventDefault() 'nie działają. –

4

Inny sposób to:

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

    //some code here 

    return false; 
}); 
+0

jeśli jest żądanie $ .ajax w funkcji body retruning false nie działa. :( Każde inne obejście? – ravi1991

+1

@ ravi1991 po prostu 'return false' zaraz po' $ .ajax() ' –