Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Jak obsłużyć checkbox'a? Pewnie banał ale potrzebuję pomocy.
Forum PHP.pl > Forum > Przedszkole
stmarteen
Witam kolegów.
Problem pewnie dla wielu z Was jest banalny, niestety są to moje pierwsze kroki w tworzeniu www i zwyczajnie wymiękłem. Bardzo proszę o pomoc.

Potrzebuję umieścić na stronie pole checkbox i obsługiwać każdą jego zmianę, ale bez dodatkowych przycisków typu wyślij formularz itp. Chcę zrobić to tak, żeby samo jego zaznaczenie lub odznaczenie wywoływało interakcję strony.
Czyli weźmy najbanalniejszy przykład - umieszczenie tego pola i wyświetlanie obok niego komunikatu "zaznaczony" lub "brak zaznaczenia" w zależności od aktualnego stanu. Czy ktoś mógłby mi zademonstrować jak taki efekt uzyskać?

Po wielu zarwanych nocach i przewertowaniu setek stron w sieci udało mi się uzyskać analogiczny efekt dla pola select.
Kod wraz z pobieraniem elementów do select'a z pliku XML (może się komuś przyda) wygląda tak:

  1. <script type="text/JavaScript">
  2. <!--
  3. function MM_jumpMenu(targ,selObj,restore){ //v3.0
  4. eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  5. if (restore) selObj.selectedIndex=0;
  6. }
  7. //-->
  8. </script>
  9.  
  10. <select name="points" style="width: 190px; font-size: 14pt" onChange="MM_jumpMenu('parent',this,0)">
  11. <?php
  12. $punkty = simplexml_load_file('punkty.xml');
  13. $loadpkt = $punkty->attributes();
  14. $qq=$_GET['a'];
  15. echo '<option>&nbsp;</option>';
  16. foreach ($punkty->punkt as $loadpkt) {
  17. $xyz=$loadpkt['nazwa'];
  18. if($xyz==$qq)
  19. echo '<option selected="selected" value="index.php?a='.$xyz.'">'.$xyz.'</option>';
  20. else
  21. echo '<option value="index.php?a='.$xyz.'">'.$xyz.'</option>';
  22. }
  23. ?>
  24. </select>
  25. <?php
  26. echo $_GET['a'];
  27. ?>


Nie ukrywam że cały skrypt funkcji MM_jumpMenu przepisałem i stosuję totalnie bez zrozumienia smile.gif Ale działa.
Przez chwilę myślałem że teraz będzie już z górki i przez analogię poradzę sobie z obsługą checkbox. Niestety myliłem się.
Bardzo proszę o pomoc. Moja rejestracja tutaj jest naprawdę aktem ostatniej desperacji.
Od dwóch tygodni wertuję google w poszukiwaniu rozwiązania mojego problemu, więc jeśli ktoś zechce mi odpowiedzieć że wystarczyło w google wpisać coś tam to gorąco apeluję żeby mi tego oszczędził.
ber32
Witam. Napisałem gotowca.

poruszyła mnie ta opowieść oneeyedsmiley02.png

  1.  
  2. <input type="checkbox" name="xbo" value="" />


  1.  
  2. $(function() {
  3. $('input[name=xbo]').click(function() {
  4. if( $('input[name=xbo]').attr('checked') )
  5. {
  6. alert('wlacz');
  7. }else{
  8. alert('wylacz');
  9. }
  10. });
  11. });
stmarteen
Cytat(ber32 @ 25.01.2013, 17:16:39 ) *
Witam. Napisałem gotowca.

poruszyła mnie ta opowieść oneeyedsmiley02.png

  1.  
  2. <input type="checkbox" name="xbo" value="" />


  1.  
  2. $(function() {
  3. $('input[name=xbo]').click(function() {
  4. if( $('input[name=xbo]').attr('checked') )
  5. {
  6. alert('wlacz');
  7. }else{
  8. alert('wylacz');
  9. }
  10. });
  11. });



Dzięki za odp no i twoją wrażliwość smile.gif
Ale albo ja nie umiem użyć gotowca (kompromitacja), albo czegoś nie łapię.
1 sprawa:
W najprostszym odruchu przekleiłem kod żeby zobaczyć co się pokaże na stronie.
Gdy wziąłem twoją funkcję w znaczniki php to wyrzuca mi błąd:

Parse error: syntax error, unexpected '(', expecting variable (T_VARIABLE) or '$' in C:\xampp\htdocs\test3\checkbox1.php on line 28

Line 28 to u mnie:

$(function() {


Czy ja coś źle robię / umieszczam, czy tu mimo wszystko jest jakiś składniowy błąd?

2 rzecz:
W ogóle jakim cudem to działa bez ustawienia żadnego eventa dla checkboxa? Nie ustawiasz żadnego onChange, onClick ani nic takiego. Tak się da??
Gość
@ber32 zastosował w swoim kodzie instrukcje dla jQuery, o ile gdzieś wcześniej ładujesz ten skrypt, to powinno działać

Ewentualnie można bez jQuery, coś w tym stylu:
  1. <input type="checkbox" name="xbo" value="1" onclick="click_checkbox(this)" />
  2. <script type="text/javascript">
  3. function click_checkbox(e) {
  4. if (e.checked) {
  5. alert('zaznaczony');
  6. }
  7. else {
  8. alert('nie zaznaczony');
  9. }
  10. }


Michasko
To błąd PHP, pokaż coś więcej niż samą tą linię (kilka linii w tył i w przód).
Prawdopodobnie wrzuciłeś to po prostu w kod PHP, a powinieneś zastosować
  1. echo (' tutaj treść skryptu ');
i dodatkowo objąć ten skrypt JS znacznikami HTML:
  1. <script type="text/javascript"> tutaj skrypt javascript</script>
stmarteen
Szlachetny Gościu - kimkolwiek jesteś BARDZO DZIĘKUJĘ. Twoja metoda jest dokładnie tym czego potrzebowałem. Gdybyś był kobietą to wiedz że w tym momencie wyściskałbym Cię i wycałował tak jak nikt nigdy przedtem!!!!
@ber32 i @Michasko - Wam również z całego serca bardzo dziękuję! Ogromny szacunek dla wszystkich tych którzy mają wiedzę i w tych wilczych czasach potrafią i chcą bezinteresownie podzielić się nią z innymi. Big respect!!! Mam nadzieje że kiedyś będę w stanie oddać to co otrzymałem pomagając komuś innemu.
A dla takich jak ja załączam poniżej kompletny kod który realizuje dokładnie to co chciałem uzyskać - wystarczy Ctrl-C Ctrl-V i zapisać to w index.php
Biorąc pod uwagę moje umiejętności zapewne nie jest optymalny ale działa i można na jego bazie coś wyrzeźbić.

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. <title>Obsluga pola checkbox</title>
  5. <script type="text/JavaScript">
  6. function click_checkbox(e) {
  7. if (e.checked) {
  8. // alert('zaznaczony');
  9. document.location.href = "index.php?x=1";
  10. }
  11. else {
  12. // alert('nie zaznaczony');
  13. document.location.href = "index.php?x=0";
  14. }
  15. }
  16. </script>
  17. </head>
  18.  
  19. <body>
  20. <?php
  21. if(isset($_GET['x'])){
  22. if ($_GET['x']==0){
  23. echo '<input type="checkbox" name="xbo" value="1" onclick="click_checkbox(this)" />';
  24. echo ' nie zaznaczony';
  25. }
  26. if ($_GET['x']==1) {
  27. echo '<input type="checkbox" checked="checked" name="xbo" value="1" onclick="click_checkbox(this)" />';
  28. echo 'zaznaczony';
  29. }
  30. }
  31. else {
  32. echo '<input type="checkbox" name="xbo" value="1" onclick="click_checkbox(this)" />';
  33. echo ' nie zaznaczony';
  34. }
  35. ?>
  36. </body>
  37. </html>
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.