Autor Zpráva
helpik.JPW
Profil
Dobrý den,

chtěl bych si udělat seznam bodů (úkolů) k nějaké práci. Zkusil jsem MS Word, papír, Evernote, HTML checklist ... . U všech ale byl zásadní nedostatek v tom, že:

A/ když splním sadů úkolů (odfajfknu), chtěl bych, aby se mi automaticky odfajfkla celá skupina

[ x ] sada 1
[ x ] úkol 1 sady 1
[ x ] úkol 2 sady 1
[ x ] úkol 3 sady 1

B/ některé úkoly jsou součástí i jiných sad. Bylo by dobré, aby když například splním úkol 3 v sadě 2, aby se například odfajfkl i úkol 5 v sadě 4. A to i oboustranně.

[ ] sada 2
[ ] úkol 1 sady 2
[ ] úkol 2 sady 2
[ x ] úkol 3 sady 2


[ ] sada 4
[ ] úkol 1 sady 4
[ ] úkol 2 sady 4
[ ] úkol 3 sady 4
[ ] úkol 4 sady 4
[ x ] úkol 5 sady 4


Snad si rozumíme.

Napadlo mě, že toto by mohlo zvládat jQuery, ale nejsem v něm kovaný (jen naprosté základy) a nevím ani jak začít.


Pokud víte o jiném řešení podmínek splněných úkolů (bodů), budu rád za inspiraci. Nebaví mě pořád tisknout sady úkolů a pak v jiné řadě odškrtávat to, co jsem udělal v jedné ze sad předešlých.

Nebo jak toto řešíte Vy?

Děkuji a příjemný den.
Str4wberry
Profil
A zajímá vás, jak toto úskalí vyřešit v JavaScriptu, nebo hledáte hotové řešení poznámek s danou funkcionalitou?
helpik.JPW
Profil
Str4wberry:
Napíšu to takto:
- pro nikoho to nedělám. Dělám to pro sebe a pro domácí použití. Když budete mít funkční řečení, mohu ho hned poupravit, napsat si ty úkoly a fungovat mnohem efektivněji rychleji. Na pochopení si pak vyhradit čas na dobu, kdy ho budu mít (to znamená třeba za měsíc, nebo 2)

- JavaScript (jQuery): napadlo mě, že by to tak šlo, že by to bylo efektní i efektivní. Pokud to bude v něčem jiném (PHP, MySQL nebo v prostém HTML), tak mi to bude také téměř jedno (+- ovládám).

Potřebuji být jen efektivnější v těch seznamech a když pochopím, jak ten kód funguje, budu také rád, pač si ho budu moci sám opravit.

Děkuji.
Str4wberry
Profil
Tak řešení je zhruba následující:
1) Při kliknutí na hlavní checkbox jeho hodnotu nastavit všem podřízeným checkboxům.
2) Při kliknutí na libovolný podřízený checkbox projít všechny podřízené a hledat nějaký nezaškrtnutý* a podle toho nastavit hodnotu toho nadřazeného. (Když se najde alespoň jeden nezaškrtnutý => nadřazený bude nezaškrtnutý, jinak se zaškrtne.)

*) Nebo naopak zaškrtnutý.
helpik.JPW
Profil
Str4wberry:
Děkuji za reakci. Trochu mi pomohla si pár věcí uvědomit.

Ale jak právě udělat to:
- if (checked) v sadě 1, then označ určený checkbox id 2 v sadě 3
- ty sady (skupiny) budou zřejmě v: name="sada1"
- jak označím rodičovský prvek sady
- jak označím checkbox, který se má "odfajfknout", když jiný checkbox v jiné sadě jsem "odfajfknul"?
- v případě zaškrtnutých všech dětí, zaškrtnout rodiče sady a vypsat "Máš hotovo, máš volno :)"


Zatím jsem pokročil takto (http://tinker.io/7209f/3 - jsfidde hází 500). Připomínám, že jQuery příliš neovládám.

Pro jistotu dávám ještě kód sem.

$(function() {
    $('.checkbox').click(function() {
        alert($(this).val() + ' ' + (this.checked ? 'checked' : 'unchecked'));
    });
});


<fieldset>
    <legend>Sada 1 (zatím bez rodičovského checkboxu)</legend>
    <label for="sada_01_ukol_01">
        <input type="checkbox" class="checkbox" id="sada_01_ukol_01" value="sada_01_ukol_01" name="sada01[]">
            Úkol 1 (Sada 1)
        </label>
    <label for="sada_01_ukol_02">
        <input type="checkbox" class="checkbox" id="sada_01_ukol_02" value="sada_01_ukol_02" name="sada01[]">
            Úkol 2 (Sada 1)
    </label>
</fieldset>

<fieldset>
    <legend>Sada 2 (zatím bez rodičovského checkboxu)</legend>
    <label for="sada_02_ukol_01">
        <input type="checkbox" class="checkbox" id="sada_02_ukol_01" value="sada_02_ukol_01" name="sada02[]">
            Úkol 1 (Sada 2)
        </label>
    <label for="sada_02_ukol_02">
        <input type="checkbox" class="checkbox" id="sada_02_ukol_02" value="sada_02_ukol_02" name="sada02[]">
            Úkol 2 (Sada 2)
    </label>
</fieldset>

Snažím se a děkuji za rady (od všech)
Str4wberry
Profil
Tak dobře, tady máte hotové řešení. Pro zajímavost ve směsi jQuery a normálního JS. :–)
helpik.JPW
Profil
Str4wberry:
Skvělé :)! Moc Vám děkuji.

Tento týden se ještě pokusím udělat i výše popisovanou fičuru - když si nastavím u jednoho checkboxu nějakou asociaci k jinému checkboxu v jiné sadě nebo té samé sadě, tak se mi po odškrtnutí jedné z nich tak druhá (třetí, ...) odškrtne také.

Za to poslané řešení Vám ještě jednou děkuji.

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: