Co w tym złego?
HTML:
<form action="http://localhost:8888/bevbros/index.php/test" method="post" accept-charset="utf-8" id="cpa-form" class="forms">
<input type="text" name="zip" value="Zip code" id="Zip" class="required valid">
<input type="submit" name="Next" value="Submit" class="forms" id="1">
</form>
jQuery:
$("#cpa-form").submit(function(e){
e.preventDefault();
});
jquery
preventdefault
djreed
źródło
źródło
alert()
w module obsługi przesyłania, czy zostanie wywołany? Jeśli nie, może to oznaczać, że w skrypcie jest błąd, który uniemożliwia poprawne połączenie programu obsługi zdarzeń. Coś w konsoli błędów?Odpowiedzi:
Spróbuj tego:
źródło
e.preventDefault()
działa dobrze z przesłaniem formularza, problem leży w innym miejscu kodu PO. Używaniereturn false
może spowodować niezamierzone konsekwencje.Użyj nowej składni zdarzenia „on”.
Cytuj: https://api.jquery.com/on/
źródło
$(document).ready()
) Jak mam to zrobić?true
lubfalse
? Czy możesz odtworzyć swój kod w jsfiddle.net i wysłać link? Spróbuj dodać znak,alert()
aby potwierdzić, że funkcja się uruchamia. Niektórzy ludzie zgłaszali, że dodaniee.stopPropagation();
poe.preventDefault();
zatrzymaniu innych powiązanych zdarzeń z odpalenia.$('#myFormID').validationEngine('validate')
z jQuery validationEngine jako zmiennejvalid
, aby sprawdzić, czy dane wejściowe są prawidłowym adresem e-mail. Niemniej jednak chcę, aby w obu przypadkach zapobiegało to domyślnemu zachowaniu; niepreventDefault
muszą być wewnątrz bloku if, a nie przed nim?preventDefault
Jest w środku , jeśli nie ważnego bloku zatrzymać przedstawienie postaci. Innymi słowy, jeśli jest prawidłowy , użyj domyślnego zachowania formularza.Uważam, że wszystkie powyższe odpowiedzi są poprawne, ale to nie wyjaśnia, dlaczego
submit
metoda nie działa.Cóż,
submit
metoda nie zadziała, jeśli jQuery nie może pobraćform
elementu, a jQuery nie daje z tego powodu żadnego błędu. Jeśli skrypt jest umieszczony w nagłówku dokumentu, upewnij się, że kod jest uruchamiany poDOM
to gotowy . Więc$(document).ready(function () { // your code here // });
rozwiąże problem.Najlepszą praktyką jest zawsze umieszczanie skryptu na dole dokumentu.
źródło
To odwieczne pytanie, ale przyjęta tutaj odpowiedź nie prowadzi tak naprawdę do źródła problemu.
Możesz rozwiązać ten problem na dwa sposoby. Najpierw z jQuery:
Lub bez jQuery:
Nie musisz używać
return false
do rozwiązania tego problemu.źródło
źródło
źródło
Twój kod jest w porządku, wystarczy umieścić go w gotowej funkcji.
źródło
Możesz także wypróbować ten kod, jeśli na przykład później dodano dynamiczne formularze. Na przykład załadowałeś okno asynchronicznie z ajaxem i chcesz przesłać ten formularz.
Przypadek 1, wersja statyczna: Jeśli masz tylko kilku odbiorników, a formularz do obsługi jest zakodowany na stałe, możesz słuchać bezpośrednio na „poziomie dokumentu”. Nie użyłbym słuchaczy na poziomie dokumentu, ale spróbuję zagłębić się w drzewko zagłady, ponieważ może to prowadzić do problemów z wydajnością (zależy od rozmiaru Twojej witryny i zawartości)
LUB
LUB
LUB
źródło
.live()
jest przestarzały od wersji 1.7 jQuery i usunięty od 1.9. Użyj.on()
zamiast tego.Witam szukał rozwiązania, aby formularz Ajax działał z Menedżerem tagów Google (GTM), zwrot false uniemożliwił zakończenie i przesłanie aktywacji zdarzenia w czasie rzeczywistym w rozwiązaniu Google Analytics polegało na zmianie zwrotu false przez e.preventDefault () ; który działał poprawnie, jest zgodny z kodem:
źródło
e.preventDefault () działa dobrze tylko wtedy, gdy nie masz problemu z skryptami javascripts, sprawdź swoje javascripts, jeśli e.preventDefault () nie działa, prawdopodobnie inne części twojego JS również nie działają
źródło
Cóż, napotkałem podobny problem. Problem polega na tym, że plik JS jest ładowany przed renderowaniem DOM. Więc przenieś swój
<script>
na koniec<body>
tagu.lub użyj odroczenia.
więc możesz
e.preventDefault()
mieć pewność, że będzie działać.źródło