Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] jQuery wartości zaznaczonych checkbox.
Forum PHP.pl > Forum > Przedszkole
arzach
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 ?
Fifi209
Jak masz te same name na inputach to się nie dziw.
arzach
Chodzi i pobranie tych wartości z tablicy test.
Fifi209
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.
arzach
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 ?
Fifi209
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.
arzach
  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() {


?
erix
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\[\]]')
arzach
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 ?
erix
Kod
$(this).each( function(){
wynik += $(this).val() + '<br>';
});

this w kontekście zdarzenia zawiera tylko jeden element. Pogłówkuj. [;
arzach
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 ?
erix
Znowu zrobiłeś ten sam błąd... ;/

Poza tym, po co wyszukujesz elementy dwa razy?
arzach
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 ?






?
erix
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. [;
arzach
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ć ?
erix
Ustaw jakąś wartość dla wynik przed dopisywaniem, a nie tylko deklarujesz, że ma być zmienna.
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.