Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zablokowac radio
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
adeq_PL
Witam mam problem. Pisze skrypt, ktory ma za zadanie po zaznaczeniu jednego checkboxa zablokowac kilka radio buttonow.

Oto kod:

  1. <?php
  2.  if(isset($_POST['miasto'])){
  3.            echo "<script language=javascript>
  4.             <!--
  5.             function on(){
  6.                if(document.formularz.chk.checked){
  7.                   document.formularz.txt.disabled=true;
  8.                }
  9.                else{
  10.                  document.formularz.txt.disabled=false;
  11.                }
  12.              }
  13.              //-->
  14.              </script>";
  15.  
  16.        echo "<td><INPUT TYPE='checkbox' NAME='chk' VALUE='cos' onClick='on()'></td></tr>";
  17.      }
  18.  
  19.  while($pole = mysql_fetch_row($dzialaj)){
  20.  
  21.           $j=$j+1;
  22.    
  23.     if(isset($_POST['miasto'])){
  24.         echo "<tr class=tabela2><td><INPUT TYPE='radio' NAME='txt'></td>"; 
  25.      }
  26.  }
  27.  
  28. ?>


I problem jest taki , ze zaznaczeniu check dla jednego radio dziala wszystko ok, przy wygenerowaniu kilku radio skrypt sie sypie.... Mozna z tym cos zrobic?

Pomozcie... pozdrawiam adeq_PL
marcini82
Nie wiem jak to zadziala w praktyce, ale ja bym sprobowal nadac kazdemu polu radio inny id (np. liczbe albo zlepek liter i cyfr) i potem blokowac/odblokowywac w petli wszystkie po kolei korzystajac z document.getElementById().
adeq_PL
No tak to jest z pewnoscia dobry pomysl, ale ja z js jestem raczej slaby i nie wiem zbytnio jak mam skonstruowac ta petle wewnatrz skryptu js... Wlasciwie to chcialbym prosic o jakis konkretny przyklad, moze to do czego doszedlem na wstepie dalo by sie jakos przeksztalcic...


pozdrawiam adeq_PL
marcini82
To powinno działac:
  1. <?php
  2.  if(isset($_POST['miasto'])){
  3.  $ile=mysql_num_rows($dzialaj);
  4.  echo "<script language=javascript>
  5. <!--
  6. function on(){
  7.  if(document.formularz.chk.checked){
  8. for (var j=0; j<".$ile."; j++){
  9. document.getElementById(j).disabled=true;
  10. }
  11.  }
  12.  else{
  13. for (var j=0; j<".$ile."; j++){
  14. document.getElementById(j).disabled=false;
  15. }
  16.  }
  17.  }
  18.  //-->
  19.  </script>";
  20.  
  21.  echo "<td><INPUT TYPE='checkbox' NAME='chk' VALUE='cos' onClick='on()'></td></tr>";
  22.  }
  23.  
  24.  $licznik=0;
  25.  while($pole = mysql_fetch_row($dzialaj)){
  26.  
  27. $j=$j+1;
  28.  
  29. if(isset($_POST['miasto'])){
  30. echo "<tr class=tabela2><td><INPUT TYPE='radio' NAME='txt' id=".$licznik."></td>";
  31. $licznik++; 
  32.  }
  33.  }
  34.  
  35. ?>


A w kazdym razie na pewno dziala sama petla wlaczajaca/wylaczajaca pola radio.
aleksander
a nie powinno bcy disabled="disabled" questionmark.gif
siemakuba
@aleksander: owszem, w HTML/XHTML powinno. Ale disbaled to podobnie jak checked czy selected jest atrybutem typu boolean (jezeli mozna to tak nazwac). Dopiero XHTML (nie jestem pewny czy HTML Strict tez) wymusza stosowanie zapisu w formie disabled="disbled". Wczesniej mozna bylo bez problemu ustawiac je jako
  1. <input type="text" disabled>
. Stad takie wlasnie ustawianie przez JS:
Kod
e.disabled = true;
e.checked = true;
e.selected = true;


pozdr.
adeq_PL
WIELLKIE DZIEKI @marcini82 bardzo mi pomogles!!!!!
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.