Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zachowanie "modyfikacji" formularza
Forum PHP.pl > Forum > Po stronie przeglądarki
markonix
Problem dość błachy i teoretycznie rozwiązany ale moje rozwiązanie wydaje się infantylne i szukam czegoś lepszego.

Przy budowaniu formularzy bardzo często wiele pól jest dynamicznych, w najprostszym przykładzie chodzi o pola opcjonalne, które pojawiają się np. po zaznaczeniu checboxa.
Przypinam event pod checbox i ukrywam odpowiednio jakiś div z opcjonalnymi polami.

Problem przychodzi po submit gdy np. wystąpiły błędy walidacji. Checbox będzie zaznaczony jednak mimo to dodatkowe pola ukryte. Rozwiązania:

1) Przy załadowaniu strony po prostu sprawdzam czy checbox jest zaznaczony i wykonuje odpowiednią akcje - ukryj/pokaż. Ten sposób działa ale jest to infantylna duplikacja kodu czy po prostu logiki całego formularza, a te mogą być naprawdę rozbudowane. Słabo to wygląda.
2) Skorzystać z trigger, na powyższym przykładzie wywołać sztuczny change na checbox'ie. Nie ma tu duplikacji kodu, wymaga to jednak znów podpinania eventów pod każdy element który ma wpływ na formularz.

Czy ktoś wymyślił coś lepszego? Może jakiś plugin do re-populating'u (te określenie pojawia się w kontekście PHP gdzie po przeładowaniu formularza dbamy o to aby nie zniknęły wartości input, zaznaczenia itp.) forma?
trueblue
A jedna funkcja obsługująca cały formularz, która jest wywoływana na event z dowolnego elementu, jak i również przy otwarciu formularza?
markonix
W sumie też dobry pomysł, coś w stylu refreshForm() - jedyny minus jak widzę to, że przy każdym evencie jest troszkę duży narzut bo cała funkcja jest wykonywana przy każdej akcji nawet jeżeli tak miała mały wpływ na formularz.
Poza tym traci się referencje do $(this), trzeba by ją chyba co najwyżej przekazywać do metody jako argument.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.