Jednym ze sposobów zatrzymania przesyłania formularza jest zwrócenie wartości false z funkcji JavaScript.
Po kliknięciu przycisku wysyłania wywoływana jest funkcja sprawdzania poprawności. Mam przypadek walidacji formularza. Jeśli ten warunek jest spełniony, wywołuję funkcję o nazwie returnToPreviousPage ();
function returnToPreviousPage() {
window.history.back();
}
Używam JavaScript i Dojo Toolkit .
Zamiast wracać do poprzedniej strony, przesyła formularz. Jak mogę przerwać przesyłanie i wrócić do poprzedniej strony?
javascript
html
forms
Muhammad Imran Tariq
źródło
źródło
Odpowiedzi:
Możesz użyć wartości zwracanej przez funkcję, aby zapobiec przesłaniu formularza
i działają jak
W przypadku Chrome 27.0.1453.116 m, jeśli powyższy kod nie działa, ustaw pole returnValue parametru modułu obsługi zdarzeń na false, aby działało.
Dzięki Sam za udostępnienie informacji.
EDYTOWAĆ :
Dzięki Vikram za jego obejście, jeśli validateMyForm () zwraca false:
gdzie validateMyForm () to funkcja, która zwraca false, jeśli sprawdzanie poprawności się nie powiedzie. Kluczową kwestią jest użycie zdarzenia name. Nie możemy użyć dla egepreventDefault ()
źródło
false
, nie wydaje się mieć żadnego wpływu; Chrome nadal przesyła formularz. Na przykładonsubmit="return false;"
. Jednak ustawienie obsługi zdarzeń za parametrureturnValue
boiska ifalse
działa dla mnie.validateMyForm()
ma błędyreturn false
nie zostaną osiągnięte. Więc to może się nie powieść. Po wielu godzinach znalazłem rozwiązanie, które działa i opublikowałem je poniżej.Użyj opcji zapobiegania domyślnym
Zestaw narzędzi Dojo
jQuery
Waniliowy JavaScript
źródło
target
.Obecnie działa (testowany w Chrome i Firefox):
Gdzie validateMyForm () to funkcja zwracana w
false
przypadku niepowodzenia sprawdzania poprawności. Kluczową kwestią jest użycie nazwyevent
. Nie możemy używać do npe.preventDefault()
.źródło
Wystarczy użyć prostego
button
zamiast przycisku przesyłania. I wywołaj funkcję JavaScript do obsługi przesyłania formularza:Funkcja w
script
tagu:Możesz także spróbować
window.history.forward(-1);
źródło
required
, nie będą działać.Wiele trudnych sposobów na łatwą rzecz:
źródło
Wszystkie twoje odpowiedzi dały coś do pracy.
WRESZCIE, to zadziałało dla mnie: (jeśli nie wybierzesz przynajmniej jednego pola wyboru, to ostrzega i pozostaje na tej samej stronie)
źródło
Bazując na odpowiedzi @Vikram Pudi, możemy to zrobić również z czystym Javascriptem
źródło
Zalecałbym nie używać
onsubmit
i zamiast tego dołączać zdarzenia w skrypcie.Następnie użyj
preventDefault()
(lub wreturnValue = false
przypadku starszych przeglądarek).źródło
onsubmit
?JS
zamiastHTML
atrybutów. W ten sposób nie musisz tyle przeskakiwać w przód i w tył podczas czytania cudzego koduPowiedzmy, że masz podobny formularz
Oto javascript dla funkcji confirmAction
Ten działa w przeglądarce Firefox, Chrome, Internet Explorer (Edge), Safari itp.
Jeśli tak nie jest, daj mi znać
źródło
preventDefault()
ireturnToPreviousPage()
jest idealne i eleganckie. Przerywa normalne działanie, tak jakbyś zaprojektował dowolny łapacz wyjątków do pracy. +1.Odpowiedzi Hemanta i Vikrama nie działały dla mnie wprost w Chrome. Event.preventDefault (); skrypt uniemożliwił przesłanie strony bez względu na to, czy sprawdzanie poprawności zakończyło się pomyślnie. Zamiast tego musiałem przenieść event.preventDefault (); do instrukcji if w następujący sposób:
Dzięki Hemantowi i Vikramowi za postawienie mnie na właściwej drodze.
źródło
Np. Jeśli masz przycisk w formularzu, aby zatrzymać jego propagację, po prostu napisz event.preventDefault (); w funkcji wywoływanej po kliknięciu przycisku Prześlij lub Enter.
źródło
Po prostu zrób to ....
i oto twoja JQuery
źródło