Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Aktywacja za pomocą checkbox'ów - problem
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
KR2615
Witam.
Chciałem, aby po wybraniu jednego z chceckboxów aktywowały się inne pola w moim formularzu. Znalazłem w Internecie gotowca. Wkleiłem pomiędzy <head> a </head> taki kod:
  1. function f(){
  2. if(document.getElementById('radio2').checked==true)document.getElementById('hidden').style.display='inline';
  3. else document.getElementById('hidden').style.display='none';
  4. }

a w formularzu mam coś takiego:
  1. <label for="radio1"><input id="radio1" type="radio" name="group" onclick="f()" checked="checked" />nie</label>
  2. <label for="radio2"><input id="radio2" type="radio" name="group" onclick="f()" />tak</label>

chciałbym, aby ten checkbox aktywował mi zarówno <input> jak i <select>. Niestety (na to mi wygląda) że musiałbym im nadać ten sam parametr id="". Wstawienie takiego kodu na stronę:
  1. <select style="display:none;" id="hidden" size="1" name="src">
  2. <option value="1" >raz</option>
  3. <option value="2" >dwa</option>
  4. <option value="3" >trzy</option>
  5. </select><br />
  6. <input style="display:none;" id="hidden" type="text" name="date" size="40" value="">

Powoduje że wyświetla się tylko <select> Nie wiem jak sobie z tym poradzić, potrzebuję pomocy.
luckyps
Nie możesz mieć wiecej niż jednego id o tej samej wartości - musi być unikalne. Użyj name lub class.
KR2615
Wiem o tym i dlatego podejrzewalem, ze tak nie moze byc. Szukam innego rozwiazania. Zmieniłem z id="hidden" na class="hidden" i a do script dodałem to co znalazłem w necie
  1. var allHTMLTags = new Array();
  2.  
  3. function getElementByClass(theClass) {
  4.  
  5. var allHTMLTags=document.getElementsByTagName(.*.);
  6. for (i=0; i<allHTMLTags.length; i++) {
  7. if (allHTMLTags[i].className==theClass) {
  8. allHTMLTags[i].style.display=.none.;
  9. }
  10. }
  11. }
  12.  
  13. function f(){
  14. if(document.getElementById('radio2').checked==true)document.getElementByClass('hidden').style.display='inline';
  15. else document.getElementByClass('hidden').style.display='none';
  16. }
ale efekt jest taki, ze juz nic sie nie pojawia po wybraniu checkboxa.
luckyps
Powinna wystarczyc tylko ta funckja wywolywana na onclick:
  1. function f(){
  2. var elements = document.getElementsByClassName('hidden');
  3. if(document.getElementById('radio2').checked==true) {
  4. for (i = 0; i < elements.length; i++){
  5. elements[i].style.display = 'inline';
  6. }
  7. }
  8. else {
  9. for (i = 0; i < elements.length; i++){
  10. elements[i].style.display = 'none';
  11. }
  12. }
  13. }
KR2615
Dzięki, działa 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.