Autor Zpráva
Nailen
Profil
Zdravím, snažím se najít, jak vytvořit rozbalovací seznam, který výběrem možnosti ovlivní obsah druhého rozbalovacího seznamu. Zatím jsem toho moc nenašel. Nejspíš volím nesprávná slova jak toto hledat.

Zjistil jsem, že jedna možnost je vybrat první hodnotu a odeslat script a po najetí stránky se mi doplní druhý seznam. Touto cestou se asi vydat nechci.
Dále prý lze použít nějaký java script, ale ten prý zas načítá všechna data, která lze kombinací vyplňovat seznamy. V mém případě asi 450 kombinací a nevím jestli je to vhodné řešení.

Jaký na to máte názor? Jak by jste to řešili a kde bych našel nějakou ukázku, jak to udělat?

Děkuji za pomoc.
Keeehi
Profil
Nailen:
Pak je tu kombinace obou přístupů. Prakticky se jedná o první možnost, že po výběru možnosti z prvního seznamu se ta informace odešle na server a v odpovědi dostaneš data pro druhou možnost. Jenže místo toho aby se klasicky odeslal celý formulář a načetla se vlastně nový stránka, tak se formulář vůbec odesílat nebude. Javascript si jen vytáhne z formuláře data a postranním kanálem se serveru na data zeptá. Přitom se zůstává stále na té stejné stránce. Když data obdrží, upraví podle toho obsah druhého selectu. Tohle asynchronní načítání v javascriptu najdeš hledej pod výrazem AJAX.

Jinak ale 450 kombinací není zase až tak moc dat. Takže o této variantě taky klidně můžeš uvažovat.
Nailen
Profil
Keeehi:
skvělé, děkuji za nasměrování. Našel jsem tento script a už ho otestoval. Funguje dobře: www.codexworld.com/dynamic-dependent-select-box-using-jquery-ajax-php

Tento script funguje až do třetí úrovně. V jednotlivých úrovních lze měnit ale pouze obsah selectu toho následujícího. Když bych potřeboval na základě druhého sevectu zobrazit ve třetí úrovní ještě další obsah (zatržítka, další sevecty) tak už netuším jak pokračovat. To už asi na tuto metodu není, že?
Keeehi
Profil
Nailen:
To už asi na tuto metodu není, že?
Ale je. Princip se nemění. Máš někde prvek podle jehož hodnoty chceš měnit obsah nějakého jiného. Takže na ten na kterém to závisí navěsíš událost skrz .on('change', ...
V obsluze té události zavoláš ten Ajax. Co se má udělat až se data vrátí je definováno skrz to success: function ....
Dostaneš tam data a podle nich upravíš obsah toho prvku který má být závislý. Tohle můžeš opakovat kolikrát chceš, pro libovolný počet selectů, inputů, ... Ten Ajax, pokud budeš potřebovat, může klidně posílat data pokaždé na jinou URL. Je to flexibilní. Jestli ti něco nefunguje, tak to bude spíš tím, že jsi to upravil nějak špatně než z důvodu že by to nebylo technicky možné.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0