Autor Zpráva
JardaB
Profil
Zdravím, hledal jsem celkem dlouho, ale nic co bych dokázal upravit a podobalo by se mému případu jsem nenašel. Kvůli této věci se javascript učit nechci, poradí někdo?

Zadání je jednoduché, mám jeden formulář s checkboxy pro okresy ČR, kdy potřebuji hromadnou volbu vybrání skupiny daného kraje.
Funkci na označení úplně všeho mám, ale potřebuji označit, příp. odznačit hromadně jen skupinu, tj okresy v daném kraji atd...

Formulář vypadá nějak takhle:

<form action="" method="post">
 
    <input type="checkbox" name="checkbox[]" value="1" >Olomouc 
    <input type="checkbox" name="checkbox[]" value="2" >Prostějov
    <input type="checkbox" name="checkbox[]" value="3">Vyškov
 

    <input type="checkbox" name="checkbox[]" value="4" checked>Brno
    <input type="checkbox" name="checkbox[]" value="5" checked>Břeclav 
    <input type="checkbox" name="checkbox[]" value="6">Znojmo


<input  type="submit" value="Odeslat">
</form>
Joker
Profil
JardaB:
Nenapadá mě lepší řešení, než mít uložený seznam hodnot value příslušejících k dané volbě a pak projít checkboxy a zaškrtat ty, jejichž value je v té množině (a případně odškrtat ty, kde není- pokud se to má dělat).
JardaB
Profil
Ano seznam hodnot mám uložen a systém při generování zaškrtne ty, které má... ale mě jde o to, aby klient mohl dále upravit hodnoty ve formuláři s tím, že mu to chci ulehčit tak, aby mohl vybrat celý kraj a automaticky se všechny okresy v kraji označí nebo odznačí. Tzn potřebuji formulář upravit + aplikovat javascript, který se o to postará..
Joker
Profil
JardaB:
Já to myslel tak, že zaškrtnutí celého kraje znamená vybrat checkboxy s hodnotami value v [x, y, z, a, b, c].
Takže bych měl asi nějaké pole, které hodnoty value jsou v tom kraji, pak prošel checkoxy a zaškrtal ty, co mají value z té množiny.
JardaB
Profil
ty zjevně píšeš o tom co já mám vyřešeno.. já chci jen aby klient mohl kliknout na chckbox Vyber všechny okresy v tomto kraji... to kam a jak si to uložím prosím neřeš, to mám dávno hotové,... nechci aby klient musel otrocky zaklikávat a mohl vybírat třeba celý blok, tj všechny okresy v daném kraji jedním klikem.
Radek9
Profil
JardaB:
Ne, nepíše. Klikneš na kraj, k němu máš přiřazené pole hodnot, které se mají zaškrtnout. V onclicku projdeš checkboxy a potřebné (podle toho pole) zaškrtneš.
JardaB
Profil
Ano teď chápu.. tohle si dokážu udělat v PHP, což mi nevyhovuje, páč se stránka bude znovu načítat. A nejde nějak pomocí javascriptu přidělit jednotlivým input nějakou skupinu a poté se postarat javascriptem o označení?
Radek9
Profil
JardaB:
Já vůbec nemluvil o PHP. Tenhle proces uděláš v JS. Samozřejmě, skupinu si můžeš nastavit např. pomocí třídy nebo data atributů. V JS potom správně elementy vybereš a zaškrtneš.
JardaB
Profil
no a já na začátku psal, že s kvůli tomu javascript učit nechci, protože je to prozatím jediná věc, kterou tu v tomto směru řeším, tak jsem spíš očekával příklad, nebo odkaz na něco podobného. teoreticky jak to udělat vím, ale bez znalosti toho jazyka mi to je k ničemu.
Someone
Profil
Normálně bych tě odkázal na práce a zakázky, protože to tu za tebe nikdo psát nebude. Ale budu doufat, že tento "dobrý skutek" mě zbaví nachlazení, kterým si procházím, tak budiž.
JardaB
Profil
Já nechtěl aby to tu někdo psal, je dal tip na něco co je již hotové s radou jak si to předělat.. Ale moc díky za to, vypadá to slibně, zkusím se v tom pohrabat, páč tak jak to je to nedělá úplně co má.. když zakliknu jednu ze skupin tak ostatní to odznačí, to je blbost.. chci aby mohl klient vybrat několik skupin. Tedy asi generovat ty pole celkem otrocky tak, že pro každou danou skupinu vygeneruji celé pole všech okresu a jen změnou toho co chci měnit, což bude celkem kolem 80 hodnot každé sekce.


Nefunguje v IE, při volbě kompatibilního zobrazení... je to možné nějak obejít?


Nakonec jsem to vyřešil tímhle a funguje všude... http://www.mattkruse.com/javascript/checkboxgroup/index.html
Chamurappi
Profil
Reaguji na Someone:
[].indexOf nefunguje ve starších prohlížečích.
Volání setAttribute("checked", null) bych také moc nevěřil.

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: