Autor Zpráva
darkwalker
Profil
Ahoj, prosím vás o radu.

Mám veliký formulář, pro zjednodušení si ho představte jako mnoho inputů, z nichž některé mají třídu "a" a některé "b" atd. Dále nad formulářem mám checkboxy, které ovládají dynamické zobrazení inputů, tj. dokud je checkbox A zatržen, zobrazují se inputy "a" atd.

Data se do celého formuláře vytvářejí pomocí php, jsou natahané do pole, ze kterého se vpisují do inputů.

Pomocí jQuery funkce hide() se snažím docílit toho, aby se po odškrtnutí příslušného checkboxu nezobrazovaly inputy příslušné třídy. Toto funguje, problém je ten, že po odeslání celého formuláře se odesílají i klíče a hodnoty skrytých inputů.

Nevím si rady. Napadlo mě poslat to tak, jak to je a až v cílovém skriptu to nějak odlišit, ale nepřijde mi to moc košer řešení. Konečným cílem by mělo být to, že když odškrtnu checkbox, zmizí inputy té třídy, zároveň to zaručí, že se hodnoty z těchto skrytých inputů neodešlou, a po opětovném zaškrtnutí checkboxu se input znovu objeví, nejlépe s hodnotami, se kterými zmizely.

Dokáže mě prosím někdo navést na správné řešení? Děkuji mnohokrát.
1Pupik1989
Profil
Já bych zkusil ty inputy nadefinovat Jquery funkcí, obalil nějakým divem a postupně po zaškrtnutí Checkboxu přidal daný div anebo naopak zase odebral.
Tori
Profil
Mohou se některé inputy objevit vícekrát, tj. pro různé checkboxy?

Skrýváte jednotlivé inputy, nebo obalové <div>y? Pokud <div>y, tak by šlo při skrývání divu nastavit všechny inputy uvnitř na disabled (a při odkrytí naopak). Tím by i v inputech zůstávaly dříve vyplněné hodnoty.
V cílovém skriptu to ale stejně musíte nějak odlišit, pro lidi co budou mít vypnutý JavaScript (třeba dát jméno checkboxu jako prefix všem inputům, které s ním souvisí a podle toho některé vstupy vynechat).

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