Wszędzie w Internecie jest napisane tak jak tutaj:
http://www.felgall.com/javatip2.htm
że walidacja czy któryś z radio buttonów jest wybrany polega na iterowaniu po nich. Jednak to nie jest do końca prawda. Bo jeżeli jest tylko jeden radio button, to walidacja ta nie działa. Sprawdzałem to w Firefoxie 2 i w Internet Explorer 6.0. W momencie kiedy jest jeden radio button nie powstaje kolekcja.
Reasumując, mam:
Kod
<input type='radio' name='sklep' value='2'>
<input type='radio' name='sklep' value='3'>
<input type='radio' name='sklep' value='3'>
Wtedy kod java script:
Kod
wybrany_sklep= -1;
for (i=formularz.wybrany_sklep.length-1; i > -1; i--) {
if (formularz.wybrany_sklep[i].checked) {
wybrany_sklep = i; i = -1;
}
}
for (i=formularz.wybrany_sklep.length-1; i > -1; i--) {
if (formularz.wybrany_sklep[i].checked) {
wybrany_sklep = i; i = -1;
}
}
przy założeniu że wybrano radio o value równym 2 zwróci 2. Czyli wszystko OK.
Ale..
Jeżeli w formularzu jest tylko jeden radio:
Kod
<input type='radio' name='sklep' value='2'>
to przy założeniu, że go wybrano (czyli radio o value równym 2, to powyższy kod javascript zwraca co? -1!
Liczba tych radio buttonów jest u mnie losowa, raz to może być 5, raz 7 a czasem pojawia się tylko 1.
Dlatego chciałbym walidować JavaScriptem też ten przypadek kiedy pojawi się tylko jeden.
Jak na razie wiem, że jak jest jeden radio button i sprawdzam:
Kod
alert(formularz.wybrany_sklep.checked)to zwraca mi ładnie true, jak wybiorę tego jednego radiobuttona.
W związku z tym mam prośbę. Czy moglibyście napisać jak rozszerzyć powyższy kod JavaScript, żeby elegancko walidował wariant kiedy jest jeden albo wiele radiobuttonów?
EDIT: poprawione zgodnie z uwagą webdicepl