Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: radio sprawdzenie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
bpawlik
juz 3 godziny czytam posty dot. radio i walidacji

stworzyłem coś takiego i nie działa i już nie wiem DLACZEGO sad.gif
może macie jakieś pomysły?
  1. <script LANGUAGE="JavaScript">
  2. <!--
  3. function sprawdz()
  4. {
  5. if(document.formularz.r1.checked == false)
  6. {
  7. alert("wypelnij formularz r1");
  8. }
  9.  
  10. if(document.formularz.r2.checked == false)
  11. {
  12. alert("wypelnij formularz r2");
  13. }
  14.  
  15. }
  16. //-->
  17.  
  18. <form method="post" name="formularz" onSubmit=" sprawdz();">
  19. <input type="radio" name="r1" value="1" id="a">1
  20. <input type="radio" name="r1" value="2" id="a">2
  21. <br>
  22. <input type="radio" name="r2" value="3" id="a">1
  23. <input type="radio" name="r2" value="3" id="a">2
  24. <input type="submit">
  25. </form>


to co chcę:
jeśli zadna z opcji (1,2) w r1 nie zaznaczona to alert
jeśli zadna z opcji (1,2) w r2 nie zaznaczona to alert
i oczywiście nie puszcza submita
revyag
Musisz inaczej sprawdzać czy radio jest checked, bo na początku przyjmuje on wartość undefined a nie false.
Kod
function sprawdz(){
    if(!document.formularz.r1.checked)
    {
        alert("wypelnij formularz r1");
        return false;
    }
    if(!document.formularz.r2.checked)
    {
        alert("wypelnij formularz r2");
        return false;
    }
    return true;
}

  1. <form method="post" name="formularz" onsubmit="return sprawdz()">
bpawlik
no coś nie halo...

teraz nie ważne czy zaznaczone czy nie to wywala, ze nie zaznaczone i tylko dla r1

BTW czy dalo by sie zrobic ze jak np. mam na stronie 5 radio (r1, r2, r3, r4, r5)

to sprawdza wszystkie na raz i wypisuje JEDEN komunikat, ze np. 1, 3 i 5 sa nie zaznaczone?

gdzies spotkałem się z czym takim jak .GetElementByName lub Get ElementById
lub cos podobnego (teraz nie pamietam)

bede wdzieczny za pomoc
revyag
No masz rację smile.gif. Pośpieszyłem się z tym postem. To co napisałem jest troche bez sensu.
Problem jest taki że pole pole radio jest tablicą z ilością elementów taką jak ilość pól do zaznaczenia, więc trzeba to sprawdzać w pętli, ale zawsze jest tak że jedno pole będzie miało właściwość checkded na true a reszta na false. Sposób sprawdzenia tego będzie troche zamotany.
Tu masz przykład dla dwóch elementów radio, może coś sensownego sklecisz z tego smile.gif
Kod
function check(chk){
    res=chk.length;
    for(var i=0;i<chk.length;i++){
        if(chk[i].checked==true){
            res--;
        }
    }
    f(chk.length==res){
        return false;
    }else{
        return true;
    }
}

function sprawdz(){

    var r1 = document.formularz.r1;
    var r2 = document.formularz.r2;
    
    var unc = new Array(check(r1),check(r2));
    
    var str="";    
    
    for(var i=0;i<unc.length;i++){
        if(unc[i]==false){
            str+="r"+(i+1)+" ";
        }
    }
    
    str+="nie zaznaczone";
    
    if(str!="nie zaznaczone"){
        alert(str);
        return false;
    }
    
    return true;
}
bpawlik
działa, jest okej (za drugim podejściem) bo nie zauwazyłem literów kolegi revyag-a
w funkcji check zamiast "f" ma byś oczywiście "if"

jeszcze raz dzięki smile.gif

BTW
znalazłem też wczoraj całą klasę w JS do sprawdzania formularzy,
ale jej zasotoswanie przerasta moje mozliwości (w dziedzinie JS oczywiście)
mimo wszytko dzięki za wysiłek, może komuś innemu się to przyda

http://webcoder.info/downloads/validate.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.