[ dee_ @ 18.11.2005. 17:31 ] @
Imam problem da provjerom da li je ijedan checkbox u array-u model checkiran. forma izgleda ovako:

Code:
<form name="mejl" method="post" action="">
          <input type="checkbox" name="model[]" value="Innova">
          <input type="checkbox" name="model[]" value="Concept">
          <input type="checkbox" name="model[]" value="Moon">
         <input type="checkbox" name="model[]" value="Tecno">
           <input type="checkbox" name="model[]" value="Verona">
          <input type="checkbox" name="model[]" value="Access">
</form>


pokusao sam sa provjerom je li document.mejl.model.lenght > 0 , znaci da provjerim duljinu arraya model, ali mi javlja da objekt nije definiran...i to neovisno o tome je li ista checkirano (sta ne bi trebao bit definiran bar za jedan check?)

dakle, kako da provjerim je li bar jedan checkbox = checked?

tnx!


PS.
svojedobno sam naletio ovdje na forumu, ali vise nikako ne mogu naci.. gdje je neko stavio lijepu shemu kako se javascriptom pozivaju objekti na jednoj stranici...ali da nije imenima, nego kroz ono document.forms[].elements[]... zna li netko mozda gdje je to?



[Ovu poruku je menjao dee_ dana 18.11.2005. u 18:32 GMT+1]
[ bzero @ 18.11.2005. 18:13 ] @
Code:

for (i = 0; i < document.forms.mejl['model[]'].length; i++) {
    alert(document.forms.mejl['model[]'][i].checked);
}
[ dee_ @ 18.11.2005. 18:27 ] @
to sa iteracijom i provjerom konkretnih elemenata u model[] znam...

nego sam mislio, postoji li ijedna karakteristika za document.forms.mejl['model[]'] koja je razlicita u slucaju kad su svi unchecked ili kad je bar jedan checked?

zbunilo me ovo sa *.lenght

ja sam mislio da ce bit 0 ako nijedan nije checkiran, ali vidim sad da nije... zbunilo me jer kad ovako postavljene checkboxeve ili radiobuttone ili sta god vec primam u PHPu kroz $_POST, onda dobijem onoliko elemenata arraya model[] koliko ih je bilo checkirano kod submita...

u svakom slucaju, hvala za odgovor!



[Ovu poruku je menjao dee_ dana 18.11.2005. u 19:29 GMT+1]
[ noviKorisnik @ 18.11.2005. 20:55 ] @
document.forms.mejl['model[]'].length

Ako imaš više elemenata formulara koji nose isto ime, DOM je pametan pa automatski od njih kolekciju. Ta kolekcija naravno dobija svojstvo length, a do pojedinačnih elemenata se može doći preko odgovarajućeg indeksa u kolekciji.

Ova pamet nosi jednu zamku. Naime, ako ima samo jedan element nema ni kolekcije - priča se u potpunosti menja - svojstvo length nije definisano a pristup je direktan.

Drugim rečima, adresiranje document.forms.mejl['model[]'] može da predstavlja element formulara ili kolekciju elemenata. Ovo otežava skriptovanje.

Zato je mnogo lakše korišćenje select elementa umesto radio liste, odnosno select multiple elementa umesto grupe checkboxova.

Za ovaj konkretan primer
Code:
<form name="mejl" method="post" action="">
<select name="model[]" multiple="multiple" size="6">
          <option value="Innova">Innova</option>
          <option value="Concept">Concept</option>
          <option value="Moon">Moon</option>
          <option value="Tecno">Tecno</option>
          <option value="Verona">Verona</option>
          <option value="Access">Access</option>
</select>
</form>

Ovako je jednostavno da se utvrdi da li je selektovana bar jedna stavka s liste
Code:
if (document.forms.mejl['model[]'].selectedIndex < 0) alert ('nije ništa selektovano');
else alert ('selektovana je bar jedna opcija');
[ dee_ @ 20.11.2005. 12:42 ] @
hvala ti na odgovoru

je, ovo je puno elegantnije rjesenje...ali u konkretnom slucaju ne mogu koristit select jer mi forma mora bit takva da covjek gleda u 6 artikala (slike) i svaki pored sebe ima checkbox koji ukljuci zeli li saznat nesto vise o njemu (forma zapravo kupi zahtjeve o kojim proizvodima covjek hoce dodatne informacije i salje dobiveno na mejl dalje)

tako da bas moram koristit checkboxeve...

ali u svakom slucaju, hvala ti za ovo rjesenje!