2011-06-21 17 views
5

starałem się dowiedzieć od jakiegoś czasu, co się dzieje z moim walidacji formularza HTML5 i zauważyłem, że:HTML5 i walidacja formularza programowo złożonego

  1. kiedy złożyć formularz za pomocą jego przycisku submit sprawdzanie poprawności działa OK
  2. przy próbie przesłania formularza programowo za pomocą funkcji submit() jQuery zostaje przesłana, a sprawdzanie poprawności nie działa.
  3. kiedy wyzwolić przycisk Prześlij formularza programowo, prace walidacja

Jest to spójne we wszystkich przeglądarkach OSX (FF5, O11, Chr13), ale Safari 5, które w rzeczywistości nie sprawdza się w żadnym z przypadków .

Here is the jsFiddle to test.

jakiś pomysł dlaczego druga opcja nie działa?

+1

Twój '.submit()' w rzeczywistości nie złożyć w skrzypcach, bo masz ustawiony identyfikator przycisku Prześlij do 'submit' . http://api.jquery.com/trigger/#comment-134514715 – pimvdb

+0

Ponadto, możesz chcieć zmienić identyfikator swojego wejścia do przesłania na coś innego oprócz "input". – Perception

+0

OK Zmieniłem identyfikator przycisku formularza i id formularza - zachowanie jest takie samo – kwicher

Odpowiedz

1

Wygląda na to, że przycisk wysyłania musi zostać w jakiś sposób uruchomiony. Nie zdziwiłoby się to, ponieważ przeglądarka również nie wywołuje zdarzenia zmiany, gdy zmienia się wartość wprowadzania tekstu przez js.

+0

Zauważyłem :) – kwicher

1

Zrobiłem kilka testów i wygląda na to, że formularz jest sprawdzany i wysyłany w wyniku zdarzenia click na pierwszym elemencie <input type="submit" /> w formularzu.

To samo dzieje się, gdy fokus jest w formie (na przykład w jakimś elemencie wejściowym) i naciskasz enter. W ten sposób przeglądarki obsługują przesyłanie formularzy i zgadzam się, że to trochę dziwne.

Wygląda na to, że programowo można uruchomić sprawdzanie poprawności html5 za pomocą interfejsu API HTML5 Constraint, ale należy pamiętać o obsłudze przeglądarek.

Do any browsers yet support HTML5's checkValidity() method?

Ponadto istnieją pewne libraies JavaScript, żeby ci w tym pomóc.

Powiązane problemy