używam bardzo ładny plugin sprawdzania bassistance dla wszystkich moich potrzeb walidacji formularza: http://bassistance.de/jquery-plugins/jquery-plugin-validation/jQuery Walidacja, ale dopiero po wstępnym poddaniu
A problemem spotykam: Komunikaty o błędach pojawiają się natychmiast, nawet wtedy, gdy użytkownik nie ma zakończono wypełnianie pola. W związku z tym: nieprawidłowy adres e-mail pojawia się, dopóki użytkownik nie zakończy pisania.
W dokumentacji here, jednym rozwiązaniem jest ustawienie opcji onkeyup
na false
powodującej wyświetlanie komunikatów o błędach tylko w kolorze onblur.
Jednak w mojej konfiguracji, spotykam dwa dodatkowe problemy (nie rozwiązany przez powyższego roztworu)
- Przy składaniu nieprawidłową formę, komunikaty o błędach nie są usuwane podczas korygowania im
- gdy funkcja autofill przeglądarki, automatycznie wypełnione pola pozostają oznaczone jako błędne.
Tak więc, moje pierwsze pytanie brzmiało: w jaki sposób mogę sprawić, by sprawdzanie poprawności Bassistance było uruchamiane dopiero po pierwszym przesłaniu ORAZ z jego domyślnymi ustawieniami?
Oto mój kod:
if($('#contact_form').length) {
$("#contact_form").validate({
rules: {
first_name: {
required: true
},
last_name: {
required: true
},
message: {
required: true
},
telephone: {
required: true
},
email: {
required: true,
email: true
},
email_again: {
required: true,
email: true,
equalTo: "#email"
},
norobot: {
required:true,
minlength:4,
maxlength:4,
number:true
}
}
});
}
Proszę znaleźć pełną JavaScript tutaj: http://lad.chocolata.be/js/main.js
Oto przykład pracy z błędem z onkeyup
zestaw do false
: http://lad.chocolata.be/nl/contact
Po wysłaniu formularza w przypadku niektórych nieprawidłowych pól komunikaty o błędach nie są usuwane po ich poprawieniu.
Czego mi brakuje?
Proszę podać swój kod w oryginalnym wpisie, abyśmy mogli ponownie go otworzyć. – Sparky
Witam, pokornie nie zgadzam się z zamknięciem mojego pytania. Kod jest zbyt duży, aby opublikować go w całości tutaj, dlatego umieściłem linki do obu przykładów. Próbowałem odtworzyć to zachowanie w JSFiddle, ale nie mogę. Zgaduję, że istnieje konflikt między niektórymi z moich skryptów. Czy możesz obejrzeć załączone linki? Spróbuj przesłać formularz bez wypełniania czegokolwiek, następnie popraw pola: zobaczysz, że błędy nie zostały usunięte. W międzyczasie przerobię to pytanie, aby było bardziej jasne. – maartenmachiels
Cała idea tej strony obejmuje również pomoc dla przyszłych czytelników, co nie może się zdarzyć, gdy linki zewnętrzne są martwe. Wszystko, co możesz zrobić, by stworzyć zwięzły przykład, byłoby pomocne w ponownym otwarciu. Nawet po prostu wzięcie mojego prostego jsFiddle i podzielenie go na twoje dwa przypadki byłoby lepsze. – Sparky