| 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: 17 let
|
|||
0