Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Javascript - jak walidować input radio
tomaszs2
post 4.05.2008, 23:56:15
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 3.05.2008

Ostrzeżenie: (0%)
-----


Witam,

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'>


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;
        }
    }


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



Ten post edytował tomaszs2 5.05.2008, 00:19:25


--------------------
Polub mnie na Facebooku http://www.facebook.com/pages/Polishwords/172360026392
Albo Google+ https://plus.google.com/115722487152014068500/posts
Go to the top of the page
+Quote Post
webdice
post 5.05.2008, 00:15:31
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Proszę uzupełnić post o brakujące znaczniki bbcode.
Go to the top of the page
+Quote Post
lord_t
post 5.05.2008, 09:18:27
Post #3





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


Kod
wybrany_sklep= -1;
//dla jednego
if(document.formularz.sklep.constructor!=Array)
  {
  if(document.formularz.sklep.checked) wybrany_sklep=0;
  }
else //dla wielu
  for(i=document.formularz.sklep.length-1; i > -1; i--) {
    if (document.formularz.sklep[i].checked) {
       wybrany_sklep = i; i = -1;
       }
    }


Testowane dla takiego formularza:
  1. <form name='formularz'>
  2. <input type='radio' name='sklep' value='2'>
  3. </form>


--------------------
Go to the top of the page
+Quote Post
tomaszs2
post 6.05.2008, 22:55:40
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 3.05.2008

Ostrzeżenie: (0%)
-----


Dziękuję


--------------------
Polub mnie na Facebooku http://www.facebook.com/pages/Polishwords/172360026392
Albo Google+ https://plus.google.com/115722487152014068500/posts
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.05.2025 - 06:00