Chciałem zrobić taki mechanizm abyw zależności o wybranej opcji z pola select pojawiały się odpowiednie pary pól <input type="text">. Tzn wybieram z listy pozycję 1 pokazuję się 2 pola typu text, wybieram 2 pozycję pokazują się m 4 pola itd. Doszedłem do tego jak to zrobić, gdy jest checkbox np. addFile. Definicja subpalettes w przypadku checkboxa działa elegancko. Pojawiają się nowe pola bez przeładowywania, lecz nie mogę tego efektu osiągnąć przy polu select. A może da się zrobić przez podpięcie skryptu javascript pod zdarzenie onChange dla pola select. Ale jak podpiąć taki skrypt??
Witamy na polskim forum Contao
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!

Subpalety dla pola select w backendzie.
Rozpoczęty przez Jaro_27, sie 19 2011 12:04
#5
Napisano 20 sierpnia 2011 - 09:00

Zrobiłem tak jak radziłeś. Ale nie do końca mnie to satysfakcjonuje, ponieważ przeładowuje się strona i zostaje submitowany formularz. I teraz jeżeli jakieś pola są obowiązkowe do wypełnienia to w przypadku ich nie wypełnienia i wybraniu opcji radio buttona, formularz wywala błędy, że pola nie zostały wypełnione. Wolałbym to zrobić na zasadzie checkboxa, który do pokazania dodatkowych pól wykorzystuje ajaxa. Czy jest możliwość zatem podpiąć javascript pod takiego selecta lub radiobuttona, tak aby były odsłaniane luby ukrywane bloki z odpowiednimi polami formularza?
#6
Napisano 20 sierpnia 2011 - 09:41

Możesz zrobić to za pomocą javascriptu i metod .show() .hide(), ale wtedy ukryty input nie może być wymaganym (mandatory=>true). Tu jak dołączyć swój javascript do backendu w configu jakiegoś modułu:
$GLOBLAS['BE_MOD']['news']['javascript'] = 'system/modules/news_myExt/html/scripts.js';lub jeśli to jest twój moduł napisany od zera
array_insert($GLOBALS['BE_MOD']['content'], 0, array ( 'moj_modul' => array ( 'tables' => array('tl_mojmodul'), 'javascript' =>'system/modules/twoj_modul/html/scripts.js' ) ));Ponadto wydaje mi się, że gdzieś już coś takiego widziałem, spróbuj może poszukać na oficjalnym forum lub w repozytorium rozszerzeń.
Codefog - Contao web development
#7
Napisano 20 sierpnia 2011 - 22:41

Dzięki za podpowiedź. Zrobiłem to w javascripcie. Ale mam jeszcze jeden problem. Mój moduł składa się z dwóch części. Listy pozycji i potem edycji danego rekordu. Analogicznie jak np. newsy. I teraz script ładuje mi się również przy prezentacji tej listy i wywala mi błędy, bo nie tam elementów o id, na których pracuje skrypt. Jak zatem zrobić, aby skrypt był ładowany w module tylko przy akcji edycji. W ścieżce jest parametr act=edit wtedy ustawiany, ale nie wiem czy mogę go wykorzystać w moim skrypcie js.
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych użytkowników