Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] jQuery wartości zaznaczonych checkbox.
arzach
post 16.07.2009, 10:50:33
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Napisałem taki kod
  1. $(document).ready(function() {
  2. $("input[name='test']").click(function() {
  3. if($(this).attr('checked')){
  4. $('#wynik').html('Wybrales <br>' + $(this).val());
  5. }
  6. });
  7. });
  8.  
  9. </head>
  10. <div id="wynik"></div>
  11. <input type="checkbox" name="test[]" value="wartosc 1" />wartosc 1
  12. <input type="checkbox" name="test[]" value="wartosc 2" />wartosc 2
  13. <input type="checkbox" name="test[]" value="wartosc 3" />wartosc 3
  14. <input type="checkbox" name="test[]" value="wartosc 4" />wartosc 4



Jak mogę zrobić aby pojawiały się wszystkie zaznaczone wartości a nie tylko jedna ?

Ten post edytował arzach 16.07.2009, 11:03:11
Go to the top of the page
+Quote Post
Fifi209
post 16.07.2009, 10:57:07
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jak masz te same name na inputach to się nie dziw.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
arzach
post 16.07.2009, 11:00:11
Post #3





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Chodzi i pobranie tych wartości z tablicy test.
Go to the top of the page
+Quote Post
Fifi209
post 16.07.2009, 11:03:32
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(arzach @ 16.07.2009, 11:00:11 ) *
Chodzi i pobranie tych wartości z tablicy test.


To Ci tłumaczę albo wrzuć to do tablicy o tak:

  1. <input type="checkbox" name="test[]" value="wartosc 1" />wartosc 1
  2. <input type="checkbox" name="test[]" value="wartosc 2" />wartosc 2
  3. <input type="checkbox" name="test[]" value="wartosc 3" />wartosc 3
  4. <input type="checkbox" name="test[]" value="wartosc 4" />wartosc 4


Albo zrób tak:
  1. <input type="checkbox" name="test1" value="wartosc 1" />wartosc 1
  2. <input type="checkbox" name="test2" value="wartosc 2" />wartosc 2
  3. <input type="checkbox" name="test3" value="wartosc 3" />wartosc 3
  4. <input type="checkbox" name="test4" value="wartosc 4" />wartosc 4


Nie może być takich samych name/id w dokumencie.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
arzach
post 16.07.2009, 11:06:03
Post #5





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Zrobiłem tak ?
  1. $(document).ready(function() {
  2. $("input[name='test']").click(function() {
  3. if($(this).attr('checked')){
  4. $(this).each( function(){
  5. wynik += $(this).val() + '<br>';
  6. });
  7. $('#wynik').html('Wybrales <br>' + wynik);
  8. }
  9. });
  10. });

I czemu nie działa ?
Go to the top of the page
+Quote Post
Fifi209
post 16.07.2009, 11:10:42
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(arzach @ 16.07.2009, 11:06:03 ) *
Zrobiłem tak ?
  1. $(document).ready(function() {
  2. $("input[name='test']").click(function() {
  3. if($(this).attr('checked')){
  4. $(this).each( function(){
  5. wynik += $(this).val() + '<br>';
  6. });
  7. $('#wynik').html('Wybrales <br>' + wynik);
  8. }
  9. });
  10. });

I czemu nie działa ?


Pokaż do tego html'a.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
arzach
post 16.07.2009, 11:29:47
Post #7





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


  1. $(document).ready(function() {
  2. $("input[name='test']").click(function() {
  3. if($(this).attr('checked')){
  4. $(this).each( function(){
  5. wynik += $(this).val() + '<br>';
  6. });
  7. $('#wynik').html('Wybrales <br>' + wynik);
  8. }
  9. });
  10. });
  11.  
  12. </head>
  13. <div id="wynik"></div>
  14. <input type="checkbox" name="test[]" value="samochod" />samochod
  15. <input type="checkbox" name="test[]" value="dom" />dom
  16. <input type="checkbox" name="test[]" value="bizuteria" />bizuteria
  17. <input type="checkbox" name="test[]" value="zwierzeta" />zwierzeta



Wydaje mi się że tutaj jest źle powinno być odwołanie do tablicy ?
  1. $("input[name='test']").click(function() {


?

Ten post edytował arzach 16.07.2009, 11:16:58
Go to the top of the page
+Quote Post
erix
post 16.07.2009, 11:33:47
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale Wy kombinujecie... tongue.gif Przecież jest jasno w dokumentacji napisane, co robić, jeśli w nazwie są symbole "tablicujące":
Kod
$('input[name=test\[\]]')


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
arzach
post 16.07.2009, 11:42:54
Post #9





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Teraz jak dam tak
  1. $(document).ready(function() {
  2. $('input[name=test\[\]]').click(function() {
  3. if($(this).attr('checked')){
  4. alert('test');
  5. }
  6. });
  7. });
  8.  
  9. </head>
  10. <div id="wynik"></div>
  11. <input type="checkbox" name="test[]" value="samochod" />samochod
  12. <input type="checkbox" name="test[]" value="dom" />dom
  13. <input type="checkbox" name="test[]" value="bizuteria" />bizuteria
  14. <input type="checkbox" name="test[]" value="zwierzeta" />zwierzeta

to działa ale jak chce wyświetlić wartości i robie tak
  1. $(document).ready(function() {
  2. $('input[name=test\[\]]').click(function() {
  3. if($(this).attr('checked')){
  4. $(this).each( function(){
  5. wynik += $(this).val() + '<br>';
  6. });
  7. $('#wynik').html('Wybrales <br>' + wynik);
  8. }
  9. });
  10. });
  11.  
  12. </head>
  13. <div id="wynik"></div>
  14. <input type="checkbox" name="test[]" value="samochod" />samochod
  15. <input type="checkbox" name="test[]" value="dom" />dom
  16. <input type="checkbox" name="test[]" value="bizuteria" />bizuteria
  17. <input type="checkbox" name="test[]" value="zwierzeta" />zwierzeta

to już nie działa. Co może być tego powodem ?
Go to the top of the page
+Quote Post
erix
post 16.07.2009, 11:45:17
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Kod
$(this).each( function(){
wynik += $(this).val() + '<br>';
});

this w kontekście zdarzenia zawiera tylko jeden element. Pogłówkuj. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
arzach
post 16.07.2009, 11:54:01
Post #11





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Cytat(erix @ 16.07.2009, 12:45:17 ) *
Kod
$(this).each( function(){<BR>wynik += $(this).val() + '<BR>';<BR>});

this w kontekście zdarzenia zawiera tylko jeden element. Pogłówkuj. [;


No już prawie działa.
Zrobiłem tak

  1. $(document).ready(function() {
  2. $('input[name=test\[\]]').click(function() {
  3. if($(this).attr('checked')){
  4. var wynik;
  5. $('input[name=test]').each( function(){
  6. wynik += $(this).val() + '<br>';
  7. });
  8. $('#wynik').html('Wybrales <br>' + wynik);
  9. }
  10. });
  11. });
  12.  
  13.  
  14. </head>
  15. <div id="wynik"></div>
  16. <input type="checkbox" name="test[]" value="samochod" />samochod
  17. <input type="checkbox" name="test[]" value="dom" />dom
  18. <input type="checkbox" name="test[]" value="bizuteria" />bizuteria
  19. <input type="checkbox" name="test[]" value="zwierzeta" />zwierzeta


I pojawia się
Wybrales
undefined

Może ktoś pomóc co jest źle ?

Ten post edytował arzach 16.07.2009, 11:55:23
Go to the top of the page
+Quote Post
erix
post 16.07.2009, 11:57:18
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Znowu zrobiłeś ten sam błąd... ;/

Poza tym, po co wyszukujesz elementy dwa razy?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
arzach
post 16.07.2009, 12:45:13
Post #13





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Cytat(erix @ 16.07.2009, 12:57:18 ) *
Poza tym, po co wyszukujesz elementy dwa razy?


Można prosić jaśniej ?

Zrobiłem tak
  1. $(document).ready(function() {
  2. $('input[name=test\[\]]').click(function() {
  3. var wynik;
  4. $('input[name=test\[\]]:checked').each( function(){
  5. wynik += $(this).val() + '<br>';
  6. });
  7. $('#wynik').html('Wybrales <br>' + wynik);
  8. });
  9. });
  10.  
  11.  
  12. </head>
  13. <div id="wynik"></div>
  14. <input type="checkbox" name="test[]" value="samochod" />samochod
  15. <input type="checkbox" name="test[]" value="dom" />dom
  16. <input type="checkbox" name="test[]" value="bizuteria" />bizuteria
  17. <input type="checkbox" name="test[]" value="zwierzeta" />zwierzeta

i już prawie działa bo wyświetla wartości ale za każdym razem wyświetla na początku undefined

Przykład działa i błędu można zobaczyć na http://www.fusion.boo.pl/checkbox.htm

Ktoś wie czemu tak się dzieje ?






?
Go to the top of the page
+Quote Post
erix
post 16.07.2009, 12:46:32
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
$('input[name=test\[\]]').click(function() {
var wynik;
$('input[name=test\[\]]:checked')

Jest to podwójne wyszukanie. Przecież możesz zapisać elementy do zmiennej, z której skorzystają obie konstrukcje. Do drugiego przypadku wycinasz, co Ci trzeba przez filter() i gitara.

Cytat
i już prawie działa bo wyświetla wartości ale za każdym razem wyświetla na początku undefined

No jak ma działać, skoro onclick jest odpalany przed zaznaczeniem któregoś z checkboxów? - to nie to. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
arzach
post 16.07.2009, 13:01:33
Post #15





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Cytat(erix @ 16.07.2009, 13:46:32 ) *
Jest to podwójne wyszukanie. Przecież możesz zapisać elementy do zmiennej, z której skorzystają obie konstrukcje. Do drugiego przypadku wycinasz, co Ci trzeba przez filter() i gitara.


No jak ma działać, skoro onclick jest odpalany przed zaznaczeniem któregoś z checkboxów?


Zrobiłem tak jak piszesz.

  1. $(document).ready(function() {
  2. var element = $('input[name=test\[\]]');
  3. element.click(function() {
  4. var wynik;
  5. element.filter(":checked").each( function(){
  6. wynik += $(this).val() + '<br>';
  7. });
  8. $('#wynik').html('Wybrales <br>' + wynik);
  9. });
  10. });
  11.  
  12.  
  13. </head>
  14. <div id="wynik"></div>
  15. <input type="checkbox" name="test[]" value="samochod" />samochod
  16. <input type="checkbox" name="test[]" value="dom" />dom
  17. <input type="checkbox" name="test[]" value="bizuteria" />bizuteria
  18. <input type="checkbox" name="test[]" value="zwierzeta" />zwierzeta


Cytat
No jak ma działać, skoro onclick jest odpalany przed zaznaczeniem któregoś z checkboxów?


Ale dalej nie wiem jak pozbyć się tego błędu możesz coś bardziej nakierować ?
Go to the top of the page
+Quote Post
erix
post 16.07.2009, 13:09:17
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ustaw jakąś wartość dla wynik przed dopisywaniem, a nie tylko deklarujesz, że ma być zmienna.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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: 15.06.2025 - 07:19