Jak zapobiec przesyłaniu formularza przy użyciu jQuery?
Próbowałem wszystkiego - zobacz poniżej 3 różne opcje, które wypróbowałem, ale to wszystko nie zadziała:
$(document).ready(function() {
//option A
$("#form").submit(function(e){
e.preventDefault();
});
//option B
$("#form").submit(function(e){
stopEvent(e);
});
//option C
$("#form").submit(function(){
return false;
});
});
Co się stało?
Aktualizacja - oto mój html:
<form id="form" class="form" action="page2.php" method="post">
<!-- tags in the form -->
<p class="class2">
<input type="submit" value="Okay!" />
</p>
</form>
Czy jest tu coś nie tak?
return false;
po.submit()
pracy dla mnie! Miałem ten sam probleme.preventDefault();
kod nie zostanie osiągnięty / nie zostanie wykonany.Odpowiedzi:
Wyróżniają się dwie rzeczy:
form
. Zamiast tego odnieś się do tagu, upuszczając #.Również
e.preventDefault
jest poprawna składnia JQuery, npOpcja C również powinna działać. Nie znam opcji B.
Kompletny przykład:
źródło
$('#form')
na$('.form')
dla atrybutów klas.Prawdopodobnie masz kilka formularzy na stronie i użycie $ ('form'). Submit () dodaje to zdarzenie do pierwszego wystąpienia formularza na twojej stronie. Zamiast tego użyj selektora klasy lub spróbuj tego:
lub lepsza wersja:
źródło
Aby zapobiec domyślnemu / uniemożliwić użycie formularza przesyłania
Aby zatrzymać propagację zdarzeń, użyj
Aby zapobiec przesłaniu formularza, opcja „return false” również powinna działać.
źródło
event.stopPropagation()
ievent.preventDefault()
a.false
Wartość ta może być również przekazywane do obsługi jako skrótfunction(){ return false; }
”.Ja też miałem ten sam problem. Próbowałem też tego, czego ty próbowałeś. Następnie zmieniam metodę, aby nie używać jquery, ale używając atrybutu „onsubmit” w tagu formularza.
To działa.
Ale kiedy próbowałem umieścić zwracaną wartość false tylko w „thefunction ()”, nie przeszkadza to w procesie przesyłania, więc muszę wstawić „return false”; w atrybucie onsubmit. Tak więc dochodzę do wniosku, że moja aplikacja formularza nie może pobrać wartości zwracanej z funkcji JavaScript. Nie mam o tym pojęcia.
źródło
false;
areturn false;
. Musisz miećonsubmit="return thefunction();"
Miałem ten sam problem i rozwiązałem w ten sposób (nie elegancko ale działa):
Moim zdaniem ma tę zaletę, że w każdej chwili możesz zmienić sytuację:
źródło
$('#form').removeAttr('onsubmit');
Dołącz zdarzenie do elementu przesyłania, a nie do elementu formularza. Na przykład w swoim html zrób tak
źródło
Możesz po prostu sprawdzić, czy formularz jest prawidłowy, jeśli tak, uruchom logikę przesyłania, w przeciwnym razie pokaż błąd.
HTML
Javascript
źródło
Kiedy używam
<form>
tagu bez atrybutuid="form"
i wywołuję go przez jego nazwę tagu bezpośrednio w jQuery, działa ze mną.twój kod w pliku html:
oraz w skrypcie Jquery:
źródło
$('#form')
szuka elementu zid="form"
.$('form')
szuka elementu formularzaźródło
Zapominasz o identyfikatorze formularza i to działa
źródło
stąd: https://api.jquery.com/submit-selector/ (interesująca strona o typach przesyłania)
źródło
To również wydaje się działać i może być nieco prostsze:
źródło
Korzystając z jQuery, możesz wykonać następujące czynności:
1- Użyj natywnego formularza przesyłania zdarzenia z przyciskiem Prześlij, jednocześnie uniemożliwiając uruchomienie zdarzenia
2- Sprawdź formularz Prawidłowa właściwość Można to zaimplementować w następujący sposób:
1- HTML:
2- Javascript
źródło