Mam ten formularz w mojej aplikacji i prześlę go za pośrednictwem AJAX, ale chcę używać HTML5 do weryfikacji po stronie klienta. Chcę więc móc wymusić sprawdzanie poprawności formularza, być może za pomocą jQuery.
Chcę uruchomić sprawdzanie poprawności bez przesyłania formularza. Czy to możliwe?
jquery
html
validation
razenha
źródło
źródło
Odpowiedzi:
Aby sprawdzić, czy pewne pole jest poprawne, użyj:
Aby sprawdzić, czy formularz jest prawidłowy, użyj:
Jeśli chcesz wyświetlić natywne komunikaty o błędach, które mają niektóre przeglądarki (np. Chrome), niestety jedynym sposobem na to jest przesłanie formularza, takiego jak to:
Mam nadzieję że to pomoże. Pamiętaj, że sprawdzanie poprawności HTML5 nie jest obsługiwane we wszystkich przeglądarkach.
źródło
$myForm.submit()
z$myForm.find(':submit').click()
$('<input type="submit">').hide().appendTo($myForm).click().remove();
checkValidity()
, ale zawiera także niebezpieczny błąd.checkValidity()
wywołuje natywne komunikaty o błędach przeglądarki, a nie kliknięcie przycisku Prześlij. Jeśli masz detektor zdarzeń, który nasłuchuje po kliknięciu przycisku wysyłania, uruchomisz go, gdy wykonasz `$ myForm.find (': Submit'). Click ()`, który uruchomi się i spowoduje nieskończoną rekurencję.Znalazłem to rozwiązanie, które działa dla mnie. Wystarczy wywołać funkcję javascript w następujący sposób:
action="javascript:myFunction();"
Następnie masz sprawdzanie poprawności HTML5 ... naprawdę proste :-)
źródło
action="javascript:0"
na<form>
związałclick
imprezy na<button>
celuMyFunction()
i wszystko działało świetnie. Trzymam cały JS z dala od HTML.MyFunction
może następnie przetestować,form.checkValidity()
aby kontynuować.onsubmit()
jest prawie zawsze lepsze niż wiązanie z przyciskiemonclick()
, ponieważ istnieją inne sposoby przesłania formularza. (Zwłaszcza przez naciśnięciereturn
klawisza.)action="javascript:myFunction();"
ani nieaction="javascript:0"
działa w najnowszym Firefoksie (67). Działa w Chrome.from: sprawdzanie poprawności formularza html5
źródło
reportValidity
jest obsługiwany tylko przez Chrome 40.0$("form")[0].reportValidity()
. Potrzebuję tego na wypadek, gdyby sprawdzenie poprawności zakończyło się niepowodzeniem.poniższy kod działa dla mnie,
źródło
reportValidity()
jest najlepszą funkcją do podświetlania wymaganych pól.Oto bardziej ogólny sposób, który jest nieco czystszy:
Utwórz formularz w ten sposób (może to być fikcyjny formularz, który nic nie robi):
Powiąż wszystkie formularze, których tak naprawdę nie chcesz przesyłać:
Powiedzmy teraz, że masz
<a>
(w obrębie<form>
), który po kliknięciu chcesz zweryfikować formularz:Kilka uwag tutaj:
checkValidity()
wystarczy wywołanie do (przynajmniej w chrome). Jeśli inni mogą dodawać komentarze do testowania tej teorii w innych przeglądarkach, zaktualizuję tę odpowiedź.<form>
. To był po prostu czysty i elastyczny sposób na rozwiązanie ogólnego zastosowania.źródło
Może się spóźnić na imprezę, ale jakoś znalazłem to pytanie, próbując rozwiązać podobny problem. Ponieważ żaden kod z tej strony nie działał dla mnie, tymczasem wpadłem na rozwiązanie, które działa zgodnie ze specyfikacją.
Problem polega na tym, że twój
<form>
DOM zawiera pojedynczy<button>
element, po uruchomieniu, który<button>
automatycznie zasygnalizuje formularz. Jeśli grasz z AJAX, prawdopodobnie musisz zapobiec domyślnej akcji. Ale jest pewien haczyk: jeśli to zrobisz, zapobiegniesz również podstawowej weryfikacji HTML5. Dlatego dobrym pomysłem jest uniknięcie domyślnych ustawień tego przycisku tylko wtedy, gdy formularz jest prawidłowy. W przeciwnym razie walidacja HTML5 ochroni Cię przed przesłaniem. jQuerycheckValidity()
pomoże w tym:jQuery:
Kod opisany powyżej pozwoli Ci korzystać z podstawowej weryfikacji HTML5 (z dopasowaniem typu i wzorca) BEZ formularza przesyłania.
źródło
Mówisz o dwóch różnych rzeczach: „sprawdzanie poprawności HTML5” i sprawdzanie poprawności formularza HTML za pomocą javascript / jquery.
HTML5 „ma” wbudowane opcje sprawdzania poprawności formularza. Na przykład użycie atrybutu „wymagane” w polu, które może (w oparciu o implementację przeglądarki) zakończyć się niepowodzeniem przesłania formularza bez użycia javascript / jquery.
Z javascrip / jquery możesz zrobić coś takiego
źródło
triggerHtml5Validation()
funkcję. Powyższy kod dołącza do formularza przesłanie zdarzenia; po przesłaniu przechwytujesz wydarzenie i zatwierdzasz formularz. Jeśli nigdy nie będziesz chciał przesłać formularza, po prostureturn false;
i przesłanie nigdy nie nastąpi.return (valid) ? true : false
===return valid
. :)return valid
nie zwraca false dla wartości null / undefined. Ale to tak naprawdę nie ma znaczenia, odpowiedź brzmiała pseudokod, chodzi o to: użyj return false, aby nie przesłać formularza ^^źródło
Aby sprawdzić wszystkie wymagane pola formularza bez użycia przycisku Prześlij, możesz użyć funkcji poniżej.
Musisz przypisać wymagany atrybut do kontrolek.
źródło
Nie potrzebujesz jQuery, aby to osiągnąć. W formularzu dodaj:
lub w JavaScript:
W swojej
buttonSubmit
funkcji (lub jakkolwiek ją nazwiesz) możesz przesłać formularz za pomocą AJAX.buttonSubmit
zostanie wywołany tylko wtedy, gdy Twój formularz zostanie zweryfikowany w HTML5.Jeśli komuś to pomoże, oto moja
buttonSubmit
funkcja:Niektóre z moich formularzy zawierają wiele przycisków przesyłania, stąd ten wiersz
if (submitvalue == e.elements[i].value)
. Ustawiam wartośćsubmitvalue
za pomocą zdarzenia kliknięcia.źródło
Miałem dość złożoną sytuację, w której potrzebowałem wielu przycisków przesyłania, aby przetwarzać różne rzeczy. Na przykład Zapisz i Usuń.
Podstawą było to, że był również dyskretny, więc nie mogłem po prostu zrobić z niego normalnego przycisku. Ale chciałem również wykorzystać sprawdzanie poprawności HTML5.
Zdarzenie przesłać również zostało zastąpione w przypadku, gdy użytkownik nacisnął klawisz Enter, aby uruchomić oczekiwane domyślne przesyłanie; w tym przykładzie zapisz.
Oto wysiłki przetwarzania formularza, aby nadal działać z / bez javascript i ze sprawdzaniem poprawności HTML5, zarówno ze zdarzeniami przesyłania, jak i klikania.
xHTML
JavaScript
Zastrzeżenie dotyczące używania Javascript polega na tym, że domyślne kliknięcie przeglądarki musi zostać przeniesione do zdarzenia wysyłania MUSI się zdarzyć, aby wyświetlić komunikaty o błędach bez obsługi każdej przeglądarki w kodzie. W przeciwnym razie, jeśli zdarzenie kliknięcia zostanie zastąpione przez event.preventDefault () lub zwróci false, nigdy nie zostanie ono przeniesione do zdarzenia przesłania przeglądarki.
Należy zwrócić uwagę na to, że w niektórych przeglądarkach nie uruchamia formularza wysyłania, gdy użytkownik naciśnie klawisz Enter, zamiast tego uruchamia pierwszy przycisk przesyłania w formularzu. Dlatego istnieje plik console.log („formularz przesłania”), który pokazuje, że nie uruchamia się.
źródło
jQuery
jawnie. Różni się tym, że obsługuje przetwarzanie sprawdzania poprawności HTML5 za pomocą wielu przycisków przesyłania i zapobiega przesyłaniu formularza AJAX, gdy jest nieprawidłowy. Domyślnesave
działanie, gdy użytkownik naciśnieenter
klawisz na klawiaturze. Która w momencie mojego publikowania żadna z podanych odpowiedzi nie była rozwiązaniem ani dla wielu przycisków przesyłania, ani dla przechwycenia klawisza enter, aby zapobiec przesłaniu ajax.Możesz to zrobić bez przesyłania formularza.
Na przykład, jeśli przycisk Prześlij formularz o identyfikatorze „szukaj” ma inną formę. Możesz wywołać zdarzenie kliknięcia na tym przycisku przesyłania, a następnie wywołać ev.preventDefault. W moim przypadku potwierdzam formularz B ze złożonego formularza A. Lubię to
źródło
Ten sposób działa dla mnie dobrze:
Dodaj
onSubmit
atrybut do swojegoform
, nie zapomnij dołączyćreturn
do wartości.Zdefiniuj funkcję.
źródło
nie najlepsza odpowiedź, ale dla mnie działa.
źródło
Wiem, że już na nie odpowiedziano, ale mam inne możliwe rozwiązanie.
Jeśli używasz jquery, możesz to zrobić.
Najpierw utwórz kilka rozszerzeń jquery, aby móc ich użyć w razie potrzeby.
Następnie zrób coś takiego, gdzie chcesz go użyć.
źródło
źródło
To działało ode mnie, aby wyświetlać natywne komunikaty o błędach HTML 5 z weryfikacją formularza.
Uwaga: RegForm to
form id
.Odniesienie
Nadzieja pomaga komuś.
źródło
Jest to dość prosty sposób na sprawdzenie poprawności HTML5 dla dowolnej formy, przy jednoczesnym zachowaniu nowoczesnej kontroli JS nad formularzem. Jedynym zastrzeżeniem jest to, że przycisk wysyłania musi znajdować się wewnątrz
<form>
.HTML
js
źródło
Myślę, że najlepsze podejście
będzie korzystać z wtyczki jQuery Validation, która wykorzystuje sprawdzone metody sprawdzania poprawności formularzy, a także ma dobrą obsługę przeglądarki. Nie musisz się więc martwić problemami ze zgodnością przeglądarki.
I możemy użyć funkcji sprawdzania poprawności jQuery valid (), która sprawdza, czy wybrany formularz jest prawidłowy lub czy wszystkie wybrane elementy są prawidłowe bez przesłania formularza.
źródło
Zgodnie z pytaniem html5 ważność powinna być sprawdzana za pomocą jQuery na początku i w większości odpowiedzi tak się nie dzieje, a powodem tego jest:
podczas sprawdzania poprawności za pomocą domyślnej funkcji formularza HTML5
musimy zrozumieć, że jQuery zwraca tablicę obiektów, wybierając to w ten sposób
dlatego musisz określić pierwszy indeks, aby funkcja checkValidity () działała
oto kompletne rozwiązanie:
źródło