Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js] walidacja radio
agataperz
post
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 24.03.2009
Skąd: Hamburg DE

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


Witam,

mam taki skrypt
  1. function checkradio(){
  2. var radio=false;
  3. for (var i=0; i<document.formularz.length; i++){
  4. if (document.formularz.elements[i].type == "radio"){
  5. var x = document.formularz.elements[document.formularz.elements[i].name].length;
  6. for (var y=0; y<x; y++){
  7. if (document.formularz.elements[i+y].checked) break;
  8. }
  9. if (y == x){
  10. return false;
  11. } else radio=true;
  12. i = i+x-1;
  13. } else radio=true;
  14. }
  15. return radio;
  16. }


oraz

  1. <form name="formularz" action="finalizacja.php" method="post" onsubmit="return sprawdz(this);return checkradio(this)">


funkcja sprawdz działa poprawie - sprawdza pola input text
niestety funkcja checkradio nie chce działać. możecie mi powiedzieć co jest źle?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


@Magic WWW: Kłóciłbym się - szczególnie przy takiej drobnostce jak walidacja formularza.
@agataperz: Robisz dość podstawowy błąd.
Kod
onsubmit="return sprawdz(this);return checkradio(this)"

Funkcja checkradio się nie wykona, dlatego że zostanie zwrócona wartość funkcji sprawdź i ta część kody zostanie zakończona.
Przykład:
Kod
<span onclick="return true; alert(123);">KLIK</span>


Rozwiązaniem problemu jest stworzenie nowej funkcji "sprawdź wszystko" lub zapisanie tego w takiej formie:
Kod
return (sprawdz(this) && checkradio(this))


Lecimy dalej...
Jak w funkcji jako parametr przekazujesz "this": checkradio(this) to w funkcji nie musisz już korzystać z
document.formularz.length, a z przekazanej referencji:
[JAVASCRIPT] pobierz, plaintext
  1. function checkradio( formularz ){
  2. //pod zmienną formularz masz to samo co wcześniej w document.formularz
  3. // jest to lepsze rozwiązanie, gdyż skrypt nie musi ponownie szukać tego elementu
[JAVASCRIPT] pobierz, plaintext


W ogóle ta Twoja funkcja mi się nie podoba... Poczytaj o getElementsByTagName, a następnie napisz taki kod(ja przedstawiłem, go w pseudokodzie):
Kod
function sprawdz( formularz ){ //sprawdza czy któryś z inputów został zaznaczony - prawda jeżeli został, fałsz jeżeli nie został
zmienna INPUT = formularz.pobierz_wszystkie_inputy;
PĘTLA po INPUT{
   JEŻELI( INPUT.type == radio i INPUT.checked ) ZWRÓĆ prawdę
}
ZWRÓĆ fałsz
}


Powodzenia
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 22:12