Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP]Jak obsłużyć checkbox'a? Pewnie banał ale potrzebuję pomocy.
stmarteen
post 25.01.2013, 16:20:53
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 25.01.2013

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


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ł.
Go to the top of the page
+Quote Post
ber32
post 25.01.2013, 17:16:39
Post #2





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


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. });


--------------------
Go to the top of the page
+Quote Post
stmarteen
post 26.01.2013, 16:13:21
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 25.01.2013

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


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 to the top of the page
+Quote Post
-Gość-
post 26.01.2013, 16:47:43
Post #4





Goście







@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. }


Go to the top of the page
+Quote Post
Michasko
post 26.01.2013, 17:00:12
Post #5





Grupa: Zarejestrowani
Postów: 283
Pomógł: 31
Dołączył: 10.01.2006
Skąd: Działoszyn

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


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>


--------------------
Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :)
Go to the top of the page
+Quote Post
stmarteen
post 27.01.2013, 00:30:54
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 25.01.2013

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


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>


Ten post edytował stmarteen 27.01.2013, 00:33:57
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 00:31