Autor Zpráva
martinenecek
Profil
Zdravim,

potreboval bych hromadne oznaceni a odoznaceni chceckboxu na strance. Na netu jsem nasel navod :

http://kavalek.net/blog/web-development/hromadne-zpracovani-checkboxu/


udelal jsem presne to same...implementoval jsem javu a pak take odkazy, na ktere kdyz se klikne, by mely checkboxy odoznacit a oznacit, ale nic to nedela. Mam nekde neco v tom scriptu zmenit podle svych chceckboxu nebo je chyba jinde ? Je mozne najit nekde jiny navod?

Dekuji
Leo
Profil
Lepsi nez hledat jiny navod je zkusit pochopit princip. Pak uz si to predelate sam, Leo
martinenecek
Profil
To: Leo

jasne ale potrebuji v celem projektu jen jeden java script a ucit se k vuli tomu celou javu, se mi nechce :) nekde mam chybu.. chapu spatne :)
RPG
Profil
<script>

function oznac(){
var a = document.getElementsByTagName('input');
for (i=0;i<a.length;i++) {
a[i].checked=true;
}
}
</script>


Mělo by to fungovat, nezkoušel jsem… Opačný postup si zkus vymyslet sám, ať pochopíš princip.
Kolegové mne dozajisté opraví, popřípadě doplní, pokud bude něco špatně.

ad.
Nechápu, proč by ses kvůli JavaScriptu chtěl učit Javu?
Jinak si můžeš přečíst ještě tohle, je to ten samý případ s jinými prvky.
http://diskuse.jakpsatweb.cz/index.php?action=vthread&topic=34162&foru m=8&page=-1
habendorf
Profil
Kolegové mne dozajisté opraví, popřípadě doplní, pokud bude něco špatně.

ne každý input je checkbox
martinenecek
Profil
Script jsem vicemene pochopil, ale stale nefunguje, tak ho mam na strance, dekuji za rady:



<body>
<script type="text/javascript">
function select_all(e) {
for(var i = 0; i < document.getElementById(e).elements.length; i++) {
if(document.getElementById(e).elements[i].type == "checkbox")
document.getElementById(e).elements[i].checked = true;
}
}

function unselect_all(e) {
for(var i = 0; i < document.getElementById(e).elements.length; i++) {
if(document.getElementById(e).elements[i].type == "checkbox")
document.getElementById(e).elements[i].checked = false;
}
}

</script>


<FORM name="checkBoxesForm" action="" method="POST" onsubmit="">
<input type="checkbox" name="checkbox[]" value="prijmeni" checked>Příjmení
<input type="checkbox" name="checkbox[]" value="jmeno" checked>Jméno
<input type="checkbox" name="checkbox[]" value="pohlavi">Pohlaví

<a href="javascript:void(0);" title="Select all" onclick="select_all('checkBoxesForm');">Select all</a>
<a href="javascript:void(0);" title="Unselect all" onclick="unselect_all('checkBoxesForm');">Unselect all</a>

</form>
</body>
habendorf
Profil
U formu ti chybí id.
peta
Profil
function selInvert(xThis,m)
{var i,j,f; f=window.document.fdata;
for(i=0;i<m;i++)
{
j="ch"+i;
if (f[j]) {f[j].checked=(f[j].checked)?"":"checked";}
else {i=m;}
}
xThis.checked="";
}
RPG
Profil
habendorf
Díky.
Timy
Profil
j="ch"+i;
if (f[j]) {f[j].checked=(f[j].checked)?"":"checked";}
else {i=m;}

Proboha.
habendorf
Profil
Proboha.

Jj, je to obfuskátor :o)
martinenecek
Profil
To: habendorf

kde myslis ze mi chybi ID ve from a jaky tvar by melo mit to ID a nazev ? dekuji za dalsi scripty ale proc nejede ten muj konkretni?
habendorf
Profil
Ty předáváš těm funkcím id toho formu, ne?

Stačí když ve formu přepíšeš name na id, beztak to name nepotřebuješ.
martinenecek
Profil
To: habendorf

tak jsem to udelal a nic, stejne tak script od peta mi nefunguje :(
los
Profil *
martinenecek
1. Máš funkciu, ktorá zaškrtne/odškrtne všetky checkboxy vo formulári s id, ktoré jej zadáš.
2. Máš formulár, ktorý nemá nastavené id.
Ak chceš, aby to fungovalo, musíš nastaviť formuláru nejaké id, napr.: <form name="checkBoxesForm" id="checkBoxesForm" action=..., presne tak, ako Ti píše
habendorf. Ten druhý kód radšej ani neskúšaj.

Prípadne by sa dal ten JavaScript prepísať tak, aby sa nevyžadovalo id formulára, keď je v podstate úplne zbytočné. A tiež by sa dali tie dve funkcie, ktoré vezerajú skoro úplne rovnako (select_all a unselect_all), spojiť do jednej a checked nastavovať podľa argumentu. A ešte... no nič, nemusí to byť dokonalé.
peta
Profil
martinenecek
function selInvert(xThis,m)
{var i,j,f; f=window.document.fdata;
for(i=0;i<m;i++)
{
j="ch"+i;
if (f[j]) {f[j].checked=(f[j].checked)?"":"checked";}
else {i=m;}
}
xThis.checked="";
}

script peta predpoklada svuj formular
<form name="fdata">
<input type=checkbox name=ch0>
<input type=checkbox name=ch1>
<input type=checkbox name=ch2>
</form>
script peta predpoklada inteligenci, ze si to dokazes upravit pro sve potreby

--------

function select_all(e) {
for(var i = 0; i < document.getElementById(e).elements.length; i++) {
if(document.getElementById(e).elements[i].type == "checkbox")
document.getElementById(e).elements[i].checked = true;
}
}
-->
function select_all(e) {
var i,x;
x = document.getElementById(e).elements;
for(var i = 0; i < x.length; i++) {
if(x[i].type == "checkbox")
x[i].checked = true;
}
}

FUNKCE nazev(parametr)
{
x = vsechny_elementu_v_necem_co_ma_ID(parametr);
cyklus (od 0 do x.delka)
jestlize x[cislo]=typu"checkbox", pak nastav x[cislo].checked na ANO
}

a problem, jak ti pisi, je v tom, ze:
co_ma_ID(parametr)
select_all('checkBoxesForm');
jenze nikde v tom kodu nemas nic, co ma <TAG id="checkBoxesForm">
nikde neni napsano, ze TAG musi byt zrovna FORM

A dozvis se to, kdyz si spustis JS konzolu, ze to hlasi chybu.

---
vyhoda toho tveho scriptu je, ze nemusis mit ID u kazdeho checkbox, jak to mam ja. Jenze ja tam mam tech checkbox vice a by se mi to spatne odlisovalo.
martinenecek
Profil
super uz to jede ja blbec psal ID do jineho formu :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0