Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyświetlanie zmiennej w kodzie HTML bez klikania/przeładowywania
szczurcio
post 29.08.2011, 19:19:53
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.08.2011

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


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.  


Ten post edytował szczurcio 29.08.2011, 19:22:47
Go to the top of the page
+Quote Post
kamil4u
post 29.08.2011, 19:26:52
Post #2





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

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


Poczytaj o:
- getElementById <-- zwraca referencję
- onchange
-
Kod
referencja_do_elementu.disabled = 'disabled';


--------------------
Go to the top of the page
+Quote Post
szczurcio
post 29.08.2011, 19:47:17
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.08.2011

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


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?
Go to the top of the page
+Quote Post
mortus
post 29.08.2011, 20:08:24
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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().

Ten post edytował mortus 29.08.2011, 20:09:32
Go to the top of the page
+Quote Post
szczurcio
post 29.08.2011, 22:12:48
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.08.2011

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


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?
Go to the top of the page
+Quote Post
kamil4u
post 29.08.2011, 22:25:54
Post #6





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

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


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.


--------------------
Go to the top of the page
+Quote Post
szczurcio
post 30.08.2011, 16:06:06
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.08.2011

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


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ć.
Go to the top of the page
+Quote Post
kamil4u
post 30.08.2011, 17:00:43
Post #8





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

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


Najlepiej sprawdź samemu:
Kod
<script>
function switch(){
alert(123);
}

switch();
</script>


I już wiesz, że... no właśnie sprawdź co smile.gif


--------------------
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: 19.07.2025 - 04:22