Autor Zpráva
PetraPP
Profil
Vygůglila jsem si jednoduchý javascript, který by měl při výběru či označení KATEGORIE v select <option> zobrazit PODKATEGORII tj. povolit zobrazení výpisu dalšího select.
Script ale nereaguje a já se svými pomálu nulovými schopnostmi javascriptu nedokáži vůbec odhadnout, kde může být chyba.

http://kod.djpw.cz/uehb
juriad
Profil
Já bych to udělal nějak takto:
http://kod.djpw.cz/zehb
(obsahuje chybu: stačí nahradit null za '')

Všimni si, že do HTML jsem přidat atribut data-depend, který je pak používaný JavaScriptem.
V podstatě JavaScript jen sleduje, zda je select zobrazený a jestli položka je vybraná. Podle toho nastaví viditelnost závislému selectu.
Pokud se má select skrýt, tak se navíc smaže atribut name. A při zobrazení se opět obnoví. Pozor, je to navázané na všechny selecty na stránce, takže nesmíš nikde v HTML u selectu použít atribut onchange.


V tom tvém kódu je chyba především v tom, že tě nezajímá this, ale this.value (abys dostala tu hodnotu 0 nebo 1).
Str4wberry
Profil
Osobně bych se tomuto způsobu vybírání přes <select> vyhnul obloukem, je hrozně nepohodlné se těmito seznamy proklikávat.
PetraPP
Profil
juriad:
Řešení dobré a funkční, ale jak to bude fungovat, když budu mít na stránce i jiný <select> Nelze právě <select pro kategorii nějak odlišit? Nebo bude to fungovat bez problému, když si tam přidám jiný <select -> třeba pro výběr města?

Str4wberry:
Je to nepohodlné, ale je to jen do mojí administrace, tak že tento kód nijak vadit nebude.
Chamurappi
Profil
Reaguji na juriada:
Tvá ukázka nefunguje v Exploreru.
Do vlastností ve style patří vždy řetězec, netroufal bych si dát tam null. Zdá se, že to je příčina problému.
juriad
Profil
Chamurappi:
Diky, už to vidím:
For each CSS property property that is a supported CSS property, the following partial interface applies where camel-cased attribute is obtained by running the CSS property to IDL attribute algorithm for property.
Setting the camel-cased attribute attribute must invoke setProperty() with the first argument being the result of running the IDL attribute to CSS property algorithm for camel-cased attribute, as second argument the given value, and no third argument. Any exceptions thrown must be re-thrown.

The setPropertyValue(property, value) method must run these steps:
If value is the empty string, invoke removeProperty() with property as argument and terminate this algorithm.

Pro odstranění vlastnosti se má vložit prázný řetězec.


PetraPP:
Ten JS nijak neovlivňuje chování běžných selectů; jediné, co způsobí, je, že jim nastaví svůj onchange.
Upravil jsem ukázku: http://kod.djpw.cz/zehb

Pokud již select měl nějaký onchange, tak bude zachovaný. Navíc můžeš teď zadat místo 'select' třeba 'select.has-depend' a těm které mají být spravovány přidat třídu: class="has-depend" Nebo je můžeš zacílit třeba pomocí předka: div.vyber-kategorie select

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0