Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Ukrywanie i pokazywanie części kodu za pomocą select
Forum PHP.pl > Forum > Przedszkole
mich123
Na wstepie zaznaczę, że nie znam się ani na php ani java script, większość tego co udało mi się już zrealizować znalazłem w sieci i poprzerabiałem do swoich potrzeb, jednakże jest problem z którym nie mogę sobie poradzić.
Otóż, mam listę wyboru:

  1. <select name="ILE">
  2. <option>NIC</option>
  3. <option>Blok pierwszy i drugi</option>
  4. <option>Blok pierwszy, drugi i trzeci</option>
  5. <option>Blok pierwszy, drugi, trzeci i czwarty</option>


Być może takich bloków musiałbym zbudować kilka. Po wybraniu odpowiedniej opcji pokazują się wskazane bloki.

Bloki mogą być zawarte w DIV, np:
  1. <div id="blok1" style="DISPLAY: none">.....jakiś kod, tabele itp</div>
  2. <div id="blok2" style="DISPLAY: none">.....jakiś kod, tabele itp</div>
  3. <div id="blok3" style="DISPLAY: none">.....jakiś kod, tabele itp</div>
  4. <div id="blok4" style="DISPLAY: none">.....jakiś kod, tabele itp</div>


Wszystko to jest częścią większego formularza, i w tych blokach również będą nasęepne rozbudowane części, z którymi już sobie poradziłem.

Proszę o pomoc w tej sprawie.



EDIT:

Podobny problem miałem z przyciskami radio i pokazywaniem/ukrywaniem wybranego fragmentu kodu i robiłem to tak:

  1. <INPUT TYPE="radio" NAME="pyt" VALUE="tak" onClick="document.getElementById('ukryty1').style.display='block';" />tak
  2. <INPUT TYPE="radio" NAME="pyt" VALUE="nie" onClick="document.getElementById('ukryty1').style.display='none';" />nie
  3.  
  4. <div id="ukryty1" style="DISPLAY: none">
  5. jakiskod
  6. </div>


Chciałem to zrobic podobnie, jednakże nie wiem jak smile.gif


EDIT 2
<hr>
Gdybym chciał to zrobic za pomoca przycisków radio wyglądało by to tak:

  1. ILE?
  2. <INPUT TYPE="radio" NAME="czy" VALUE="nic" onClick="document.getElementById('blok1').style.display='none',
  3. document.getElementById('blok2').style.display='none', document.getElementById('blok3').style.display='none',
  4. document.getElementById('blok4').style.display='none';" />NIC
  5.  
  6.  
  7. <INPUT TYPE="radio" NAME="czy" VALUE="12" onClick="document.getElementById('blok1').style.display='block',
  8. document.getElementById('blok2').style.display='block', document.getElementById('blok3').style.display='none',
  9. document.getElementById('blok4').style.display='none';" />Blok pierwszy i drugi
  10.  
  11.  
  12. <INPUT TYPE="radio" NAME="czy" VALUE="123" onClick="document.getElementById('blok1').style.display='block',
  13. document.getElementById('blok2').style.display='block', document.getElementById('blok3').style.display='block',
  14. document.getElementById('blok4').style.display='none';" />Blok pierwszy, drugi i trzeci
  15.  
  16. <INPUT TYPE="radio" NAME="czy" VALUE="123" onClick="document.getElementById('blok1').style.display='block',
  17. document.getElementById('blok2').style.display='block', document.getElementById('blok3').style.display='block',
  18. document.getElementById('blok4').style.display='block';" />Blok pierwszy, drugi, trzeci i czwarty
  19.  
  20.  
  21. <div id="blok1" style="DISPLAY: none">1.....jakiś kod, tabele itp</div>
  22. <div id="blok2" style="DISPLAY: none">2.....jakiś kod, tabele itp</div>
  23. <div id="blok3" style="DISPLAY: none">3.....jakiś kod, tabele itp</div>
  24. <div id="blok4" style="DISPLAY: none">4.....jakiś kod, tabele itp</div>


ktoś wie? nie moge ruszyć dalej bez rozwiązania tego problemu
bzeebzee
  1. <select id="select_div">
  2. <option value="1">Div 1</option>
  3. <option value="2">Div 2</option>
  4. <option value="3">Div 3</option>
  5. </div>
  6.  
  7. <div id="1">Treść</div>
  8. <div id="2">Treść</div>
  9. <div id="3">Treść</div>


Tak się to prezentuje z poziomu html. Teraz wystarczy dodać bibliotekę jQuery oraz napisać kilka linijek kodu.

  1. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  2. $(document).ready(function() {
  3. var aDiv = 1;
  4. $('#select_div').change(function() {
  5. $('div#'+aDiv).css('display', 'none');
  6. aDiv = $(this + ' option:selected').attr('value');
  7. $('div#'+aDiv).css('display', 'block');
  8. });
  9. });


Musisz to przetestować, bo pisałem z palucha. Ogólnie uważam, że jQuery jest wygodniejsze niż czyste JS smile.gif. Powodzenia
mich123
nie działa. po odpaleniu pliku pojawia się treść z 3 divów, po wybraniu ktoregokolwiek selecta znika 3 div.

pokombinowałem i oto rezultaty:

1. gdybym cgciał wyświetlic wybranego diva wyglądało by to tak:

  1. <hea
  2. </head>
  3.  
  4.  
  5.  
  6.  
  7. <select name="lista" onchange="if (this.selectedIndex == 1) {document.getElementById('element1').style.display='block', document.getElementById('element2').style.display='none', document.getElementById('element3').style.display='none';} else {if (this.selectedIndex == 2) {document.getElementById('element1').style.display='none', document.getElementById('element3').style.display='none', document.getElementById('element2').style.display='block';} else {if (this.selectedIndex == 3) {document.getElementById('element3').style.display='block', document.getElementById('element2').style.display='none', document.getElementById('element1').style.display='none';} else {document.getElementById('element3').style.display='none';};};}">
  8. <option value="">Wybierz...</option>
  9. <option value="1">Pokaż element 1</option>
  10. <option value="2">Pokaż element 2</option>
  11. <option value="3">Pokaż element 3</option>
  12.  
  13. <div id="element1" style="display: none;">
  14. Element1
  15. </div>
  16. <div id="element2" style="display: none;">
  17. Element2
  18. </div>
  19. <div id="element3" style="display: none;">
  20. Element3
  21. </div>
  22.  
  23.  
  24. </html>


W przypadku mojego zapotrzebowania, gdzi musze wyświetlać na przemian 1 lub 1 i 2 lub 1, 2 i 3 wygląda to tak:

  1. <hea
  2. </head>
  3.  
  4.  
  5.  
  6.  
  7. <select name="lista" onchange="if (this.selectedIndex == 1) {document.getElementById('element1').style.display='block',
  8. document.getElementById('element2').style.display='none', document.getElementById('element3').style.display='none';} else {if (this.selectedIndex ==
  9. 2) {document.getElementById('element1').style.display='block', document.getElementById('element3').style.display='none',
  10. document.getElementById('element2').style.display='block';} else {if (this.selectedIndex == 3)
  11. {document.getElementById('element3').style.display='block', document.getElementById('element2').style.display='block',
  12. document.getElementById('element1').style.display='block';} else {document.getElementById('element3').style.display='none';};};}">
  13. <option value="4">Wybierz...</option>
  14. <option value="1">Pokaż element 1</option>
  15. <option value="2">Pokaż element 1 i 2</option>
  16. <option value="3">Pokaż element 1,2,3</option>
  17.  
  18. <div id="element1" style="display: none;">
  19. Element1
  20. </div>
  21. <div id="element2" style="display: none;">
  22. Element2
  23. </div>
  24. <div id="element3" style="display: none;">
  25. Element3
  26. </div>
  27.  
  28.  
  29. </html>



Jednak zostaja mi 2 problemy:
1. co zrobić żeby po wybraniu 1 opcji wszystkie divy z powrotem znikały
2. jak to wszystko uprościć, zeby wyglądało bardziej elegancko
lub
3. jak to zrobic żeby funckaja była zamknięta w <script type='text/javascript'></script> i jak ją potem wywołać

  1. </head>
  2.  
  3.  
  4.  
  5.  
  6. <select name="lista" onchange="if (this.selectedIndex == 1) {document.getElementById('element1').style.display='block', document.getElementById('element2').style.display='none', document.getElementById('element3').style.display='none';} else {if (this.selectedIndex == 2) {document.getElementById('element1').style.display='block', document.getElementById('element3').style.display='none', document.getElementById('element2').style.display='block';} else {if (this.selectedIndex == 3) {for(i=1;i<=3;i++) document.getElementById('element'+i).style.display='block';} else {if (this.selectedIndex == 5) {document.getElementById('element3').style.display='none', document.getElementById('element1').style.display='none', document.getElementById('element2').style.display='none';} else {document.getElementById('element3').style.display='none', document.getElementById('element1').style.display='none', document.getElementById('element2').style.display='none';};};};}">
  7. <option value="4">NIE</option>
  8. <option value="1">Pokaż element 1</option>
  9. <option value="2">Pokaż element 1 i 2</option>
  10. <option value="3">Pokaż element 1,2,3</option>
  11. <option value="5">Tak, więcej</option>
  12.  
  13. <div id="element1" style="display: none;">
  14. Element1
  15. </div>
  16. <div id="element2" style="display: none;">
  17. Element2
  18. </div>
  19. <div id="element3" style="display: none;">
  20. Element3
  21. </div>
  22.  
  23. <div id="element4" style="display: none;">
  24. Element4
  25. </div>
  26.  
  27. <div id="element5" style="display: none;">
  28. Element5
  29. </div>
  30.  
  31.  
  32. </html>


W tym momencie działa jak chciałem, ale > zapewne da się to zwinąć w <script type='text/javascript'></script>
i napisac jakoś w bardziej przejrzysty sposób.

trochę uprosciłem, ale pojawił się nowy problem smile.gif

  1. </head>
  2.  
  3.  
  4.  
  5. <table height="0" cellpadding="0" cellspacing="0" border="0">
  6. <tr>
  7. <td class="lewa">Czy?
  8. </td>
  9. <td class="prawa">
  10. <select name="lista" onchange="if (this.selectedIndex == 1) {document.getElementById('element1').style.display='block',
  11. document.getElementById('element2').style.display='none', document.getElementById('element3').style.display='none';} else {if (this.selectedIndex ==
  12. 2) {document.getElementById('element1').style.display='block', document.getElementById('element3').style.display='none',
  13. document.getElementById('element2').style.display='block';} else {if (this.selectedIndex == 3) {for(i=1;i<=3;i++)
  14. document.getElementById('element'+i).style.display='block';} else {document.getElementById('element3').style.display='none',
  15. document.getElementById('element1').style.display='none', document.getElementById('element2').style.display='none';};};}">
  16. <option value="NIE">NIE</option>
  17. <option value="1">Tak, jednego</option>
  18. <option value="2">Tak, dwóch</option>
  19. <option value="3">Tak, trzech</option>
  20. <option value="5">Tak, więcej</option>
  21. </td></tr>
  22.  
  23.  
  24.  
  25.  
  26. <div id="element1" style="display: none;">
  27. <table height="0" cellpadding="0" cellspacing="0" border="0">
  28. <tr>
  29. <td class="lewa">Czy?</td>
  30. <td class="prawa">
  31. <INPUT TYPE="radio" NAME="czy_wl_pos_pr_ja" VALUE="tak" onClick="document.getElementById('ukrytyw1').style.display='block';"
  32.  
  33. />tak <INPUT TYPE="radio" NAME="czy_ws1_ma" VALUE="nie" onClick="document.getElementById('ukrytyw1').style.display='none';" />nie
  34. </td></tr>
  35.  
  36.  
  37.  
  38. <div id="ukrytyw1" style="DISPLAY: none">
  39. <table height="0" cellpadding="0" cellspacing="0" border="0">
  40. <tr>
  41. <td class="lewa">Data</td>
  42. <td class="prawa"><input type="text" id="datepicker4" name="dataprwsp1"></td>
  43. </tr>
  44. </table>
  45. </div>
  46.  
  47.  
  48. </div>
  49.  
  50.  
  51. <div id="element2" style="display: none;">
  52. Element2
  53. </div>
  54. <div id="element3" style="display: none;">
  55. Element3
  56. </div>
  57.  
  58.  
  59.  
  60. </html>


Wybieram selectem opcję >tak, jednego
pojawiają się 2 przyciski Radio
Wszystko działa, ale zaznaczenie z przycisków radio nie znika.
Coś się gryzie, i nie wiem co

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.