Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlanie zmiennej w kodzie HTML bez klikania/przeładowywania
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
szczurcio
Witam,
chcę, by przy dwóch przyciskach radio, w zależności od tego, który wybrany, lista <select> była aktywna lub nie. Jeśli wybierzemy radio 1, jest aktywna, a jeśli radio 2, nie jest. I tu moje pytanie, jak w JS ustawić, a następnie wyświetlić zmienną w odpowiednim miejscu w kodzie? Jeśli ktoś nie wie, o co chodzi, poniżej podaję, jak by to wyglądało w PHP:

  1.  
  2. <select name="jakisselect" <?php
  3. if ($radiobuttons == 2)
  4. echo 'disabled="disabled"';
  5. ?> >
  6.  
kamil4u
Poczytaj o:
- getElementById <-- zwraca referencję
- onchange
-
Kod
referencja_do_elementu.disabled = 'disabled';
szczurcio
Wymyśliłem coś takiego:

  1. <form action="" method="post">
  2.  
  3. <input type="radio" name="radiobutton" value="1" onchange="disable(this.value); return false;" /> radio 1
  4.  
  5. <input type="radio" name="radiobutton" value="2" onchange="disable(this.value); return false;" /> radio 2
  6.  
  7.  
  8.  
  9. <select id="list">
  10. <option value="1">1</option>
  11. <option value="2">2</option>
  12. </select></form>
  13. <script type="text/javascript">
  14.  
  15. function disable(nr) {
  16.  
  17. if (nr == 1)
  18.  
  19. document.getElementById("list").disabled = 'disabled';
  20.  
  21.  
  22. }
  23. </script>


Niestety, to zostawia listę wyłączoną, nawet po przejściu do radio2, za to lista na początku jest aktywna. Chciałbym, żeby na początku (bez wybrania radio) była nieaktywna, a po przejściu do radio 2 "aktywowała się". Pokombinować coś z onblur?
mortus
Skoro ma być na początku nieaktywna, to niech tak będzie:
  1. <select id="list" disabled="disabled">
  2. <!-- options -->

Teraz tylko pozostaje nam java script:
[JAVASCRIPT] pobierz, plaintext
  1. function disable(nr) {
  2. if (nr == 1) {
  3. document.getElementById("list").disabled = "disabled";
  4. } else {
  5. document.getElementById("list").disabled = "";
  6. }
  7. }
[JAVASCRIPT] pobierz, plaintext

Bardziej odpowiednią nazwą funkcji byłoby switch() zamiast disable().
szczurcio
Mortus, Twoje rozwiązanie jeszcze raz pomogło, dzięki smile.gif. A co masz na myśli mówiąc "bardziej odpowiednią nazwą"? switch() jest predefiniowaną funkcją JS, więc chyba nie można innej tak nazwać? Oczywiście, mogę się mylić, i nie wiem, czy chodziło Ci o nazwę, czy o użycie switch() zamiast if?
kamil4u
Chodziło o to, że "disable" nie odzwierciedla tego co robi funkcja, gdyż ona działa w 2 strony - albo "obezwładnia" element albo wręcz przeciwnie. Lepiej użyć nazwy, która kryje pod sobą to co ta funkcja ma robić np.: toggleDisable .

Tę radę traktuj jako dobry nawyk - nie błąd.
szczurcio
A tak, ale to kwestia czysto językowa - chociaż przyznaję rację. Chodzi o to, że mortus zaproponował nazwę switch, a że taka funkcja już w JS istnieje, nie wiem czy można sobie taką samemu zdefiniować.
kamil4u
Najlepiej sprawdź samemu:
Kod
<script>
function switch(){
alert(123);
}

switch();
</script>


I już wiesz, że... no właśnie sprawdź co smile.gif
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.