Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jquery] uwidacznianie div'a po wyborze w formularzu
MalyKazio
post
Post #1





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


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.

Ten post edytował MalyKazio 11.06.2014, 10:23:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Problem z AJAX nie ma zadnego zwiazku.... patrz prosze gdzie piszesz.... przenosze.
No ale czego nie wiesz? Jak zmenic klase?
Go to the top of the page
+Quote Post
Turson
post
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


http://jsfiddle.net/3Auqm/
Go to the top of the page
+Quote Post
MalyKazio
post
Post #4





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


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?
Go to the top of the page
+Quote Post
Turson
post
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


http://jsfiddle.net/3Auqm/1/
Go to the top of the page
+Quote Post
MalyKazio
post
Post #6





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Ś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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 13:37