Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery] uwidacznianie div'a po wyborze w formularzu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
MalyKazio
Mam mniej więcej taki kod:
  1. <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
  2. <link rel="stylesheet" type="text/css" href="style.css" />
  3. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  4. <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
  5. <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
  6. </head>
  7. Wybór 1:<br />
  8. <form action="index.php" method="post" enctype="multipart/form-data">
  9. <input type="radio" name="wybor1" value="tak" checked="checked"/>Opis wyboru na tak
  10. <br />
  11. <input type="radio" name="wybor1" value="nie" />Opis wyboru nie
  12. <div id="tekst1" class="ukryte">tutaj jakiś tekst</div>
  13. </form>
  14. </body>


Teraz moje pytanie, bo nie jestem sobie w stanie poradzić. Standardowo div o id=tekst1 jest niewidoczny. Jak zrobić by pojawiał sie tylko w przypadku wyboru inputa opisanego "nie" (tzn. chodzi mi albo o usuniecie klasy "ukryte" albo o jej zmiane na klasę powiedzmy "widoczne")? Próbowałem znaleźć coś w dokumentacji jquery, ale niestety nie radzę sobie z tym najlepiej.
nospor
Problem z AJAX nie ma zadnego zwiazku.... patrz prosze gdzie piszesz.... przenosze.
No ale czego nie wiesz? Jak zmenic klase?
Turson
http://jsfiddle.net/3Auqm/
MalyKazio
Turson: Dzięki, o coś takiego mi właśnie chodziło. A da się zrobić tak, żeby dla kilku miejsc było tak samo (żeby dla każdej wersji nie pisać oddzielnego JS)?
Jest taki kod:
  1. $('input[name="wybor1"]').on('change', function(){
  2. var value = $(this).val();
  3. if(value=='nie')
  4. $('div#tekst1').show();
  5. else
  6. $('div#tekst1').hide();
  7. })


A żeby tym samym kodem zapłatwić jeszcze wybor2 (i powiazany z nim tekst2), wybor3 itd?
Turson
http://jsfiddle.net/3Auqm/1/
MalyKazio
Śmiga, że aż miło. Dziękuję bardzo, jestem wdzięczny.
Mam jednak jeszcze ostatnie pytanie.
Kod wygląda mniej więcej tak:
  1. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  2. <title> - jsFiddle demo</title>
  3. <script type='text/javascript' src='//code.jquery.com/jquery-2.1.0.js'></script>
  4. <link rel="stylesheet" type="text/css" href="/css/result-light.css">
  5. <style type='text/css'>
  6. .tekst{display:none}
  7. <script type='text/javascript'>//<![CDATA[
  8. $(window).load(function(){
  9. $('input.radio').on('change', function(){
  10. var value = $(this).val();
  11. if(value=='nie')
  12. $(this).parent('.container').find('div.tekst').show();
  13. else
  14. $(this).parent('.container').find('div.tekst').hide();
  15. })
  16. });//]]>
  17. </head>
  18. Wybór 1:<br />
  19. <form action="index.php" method="post" enctype="multipart/form-data">
  20. <div class="container">
  21. <input type="radio" class="radio" name="wybor1" value="tak" checked="checked"/>Opis wyboru na tak
  22. <br />
  23. <input type="radio" class="radio" name="wybor1" value="nie" />Opis wyboru nie
  24. <div class="tekst">tutaj jakiś tekst</div>
  25. </div>
  26. <br><br>
  27. Wybór 2:<br />
  28. <div class="container">
  29. <input type="radio" class="radio" name="wybor2" value="tak" checked="checked"/>Opis wyboru na tak
  30. <br />
  31. <input type="radio" class="radio" name="wybor2" value="nie" />Opis wyboru nie
  32. <div class="tekst">tutaj jakiś tekst</div>
  33. </div>
  34. </form>
  35. <div id="suma">0</div>
  36. </body>

Jak zrobić by w przypadku ustawienia "nie" przy polu "wybor1" do sumy (na końcu) dodawana była liczba np. 5, zaś przy wyborze "nie" przy polu "wybór2" np. liczba 10? Chodzi mi o to, by oprócz pokazywania się diva było wykonywane działanie i podmieniany był wynik w divie "suma".
Czy coś takiego ma sens:
  1. <script type='text/javascript'>//<![CDATA[
  2. $(window).load(function(){
  3. $('input.radio').on('change', function(){
  4. var value = $(this).val();
  5. var wybor1 = 5;
  6. var wybor2 = 10;
  7. if(value=='nie')
  8. $(this).parent('.container').find('div.tekst').show();
  9. else
  10. $(this).parent('.container').find('div.tekst').hide();
  11. })
  12. });//]]>

Hmm... zadeklarowałem dwie wartości i utknąłem. W php bym sobie poradził ale JS to czarna magia. Powinno być pewnie coś takiego:
if(value=='nie')
$(this).parent('.container').find('div.tekst').show();
tu dodatkowy warunek if nazwa pola = wybor1 to wtedy bierzemy wartość z diva "suma", zwiększamy o wybor1 i wklejamy na miejsce;
tu dodatkowy warunek if nazwa pola = wybor2 to wtedy bierzemy wartość z diva "suma", zwiększamy o wybor2 i wklejamy na miejsce;
else
$(this).parent('.container').find('div.tekst').hide();
})
Nie wiem jak to zrealizować w praktyce.
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.