Autor | Zpráva | ||
---|---|---|---|
Mánicka Profil * |
#1 · Zasláno: 28. 2. 2010, 14:34:25
Zdravim, potrebujem pomoct s checkboxami
Zde je JS kod: function countCb(form) { var total = 0; var max = form.cbox.length; for (var idx = 0; idx < max; idx++) { if (eval("document.reflist.cbox[" + idx + "].checked") == true) { total += 1; } } document.getElementById('cbc').innerHTML = total; } Zde je HTML: <input name="cbox[]" type="checkbox" value="<?=$row['username']?>" onClick="countCb(this.form)"> Tech inputu je vice, proto to jde pres WHILE z databazy. Potrebujem mat v NAME array [] protoze to pak jeste prechadza prez PHP. Jak to mam pak udelat, aby mi to spocitani checkboxu jelo? Kdyz ten input name necham bez [] (input name="cbox" ...) tak to jede... ale s tym arrayem mi to nejde a ja ho tam ale potrebujem. Jak to udelat ? Diky za kazdu odpoved Zdar all :) |
||
sysel Profil |
#2 · Zasláno: 1. 3. 2010, 02:49:19 · Upravil/a: sysel
Ale když je jednou name="cbox[]", tak si tam ani HTML ani Javascript žádný index nepřibásní. Indexy si tam doplní automaticky až PHP, protože bude prvky automaticky přidávat do pole.
Naproti tomu, v Javascriptu Vás vůbec konkrétní index nezajímá (nezajímá?) protože posbíráte všechny objekty se jménem cbox[] a pak s nimi postupně provedete, co budete potřebovat: JS function countCb(meno) { var total = 0; var objectCollectionCheckbox = document.getElementsByName(meno); for (var idx = 0; idx < objectCollectionCheckbox.length; idx++) { if (objectCollectionCheckbox[idx].checked == true) total += 1; } document.getElementById('cbc').innerHTML = total; } <input name="cbox[]" type="checkbox" value="<?=$row['username']?>" onClick="countCb(this.name)"> <input name="cbox[]" type="checkbox" value="<?=$row['username']?>" onClick="countCb(this.name)"> ... <input name="cboy[]" type="checkbox" value="<?=$row['username']?>" onClick="countCb(this.name)"> <input name="cboy[]" type="checkbox" value="<?=$row['username']?>" onClick="countCb(this.name)"> Jak si můžete všimnout, vytvořil jsem dvě skupiny <input>ů se sérií jmen cbox[] a cboy[]. Ty se budou pak vyhodnocovat samostatně. Doufám, že jsem nepopletl ty shromažďovací metody. Jsou tuším tři document.getElementById(IDstring) document.getElementsByName(NAMEstring) DOMelement.getElementsByTagName(HTMLTAGstring) Bližší podrobnosti se dozvíte z nápovědy a odkazů. |
||
Chamurappi Profil |
#3 · Zasláno: 1. 3. 2010, 08:15:02
Reaguji na sysla:
„Ale když je jednou name="cbox[]", tak si tam ani HTML ani Javascript žádný index nepřibásní.“ Ovšem kolekce prvků s daným jménem existuje, akorát se k ní přistupuje jinak. Ty metody, které zmiňuješ, mi připadají zbytečně upovídané. K document.getElementsByName mám trochu nedůvěru, momentálně si nevzpomínám proč, ale možná je má averze způsobená tím, že na přístup k formulářovým prvkům přes jména nejsou zapotřebí žádné hledací metody, stačí jen sjet po hierarchii.
Reaguji na Mánicku: 1) Zapomeň na eval .
2) V JavaScriptu lze objekt.vlastnost zapsat i jako objekt["vlastnost"] a jelikož ta tvá vlastnost obsahuje znaky, které nejsou dovolené v identifikátoru (hranaté závorky), je pro tebe druhý způsob zápisu jedinou možností. Přesněji:
if (document.reflist["cbox[]"][idx].checked) { total += 1; } |
||
Mánicka Profil * |
#4 · Zasláno: 1. 3. 2010, 17:19:03
Dekuju moc, uz mi to jede :)
Dik fakt ! |
||
Časová prodleva: 14 let
|
0