Korzystanie z jquery, aby uzyskać wszystkie zaznaczone pola wyboru o określonej nazwie klasy

215

Wiem, że mogę uzyskać wszystkie zaznaczone pola wyboru na stronie, używając tego:

$('input[type=checkbox]').each(function () {
    var sThisVal = (this.checked ? $(this).val() : "");
});

Ale teraz używam tego na stronie, która ma inne pola wyboru, których nie chcę uwzględniać. Jak mam zmienić powyższy kod, aby patrzeć tylko na zaznaczone pola wyboru, które mają określoną klasę?

leora
źródło
Czy powinienem zaktualizować tytuł, aby powiedzieć classzamiast name?
Russ Cam
@Russ Cam - już zrobione
leora
$ („input [type = checkbox] :checked”) też będzie działać.
super fajny

Odpowiedzi:

392

$('.theClass:checkbox:checked')da ci wszystkie zaznaczone pola wyboru z klasą theClass.

Cokegod
źródło
9
Miły. Również $ ('. TheClass: checkbox: not (: zaznaczony)') otrzyma wszystkie niezaznaczone.
Venugopal M,
Czy mogę to zrobić dla wszystkich pól wyboru z nazwą?
FluffyBeing 23.07.19
Jak mogę dodać kolejną klasę do sprawdzanych elementów? Chcę pokazać ramkę na zaznaczonych elementach wejściowych.
Najam Us Saqib
120
$('input:checkbox.class').each(function () {
       var sThisVal = (this.checked ? $(this).val() : "");
  });

Przykład do zademonstrowania.

:checkboxjest selektorem dla pól wyboru (w rzeczywistości można pominąć inputczęść selektora, chociaż znalazłem niszowe przypadki, w których można uzyskać dziwne wyniki, robiąc to we wcześniejszych wersjach biblioteki. Jestem pewien, że zostały naprawione w późniejszych wersjach). .classjest selektorem zawierającym atrybut klasy elementu class.

Russ Cam
źródło
9
Uwagi Jquery na temat: pole wyboru zaleca pozostawanie przy [type = "checkbox"]. $ ('[type = "checkbox"]. class') .... lub $ ('input [type = "checkbox"]. class')
TSmith
@TSmith czy masz referencje?
Russ Cam
9
Przeczytałem to stąd: api.jquery.com/checkbox-selector ... w części „Dodatkowe uwagi”
TSmith
73

Obowiązkowy .mapprzykład:

var checkedVals = $('.theClass:checkbox:checked').map(function() {
    return this.value;
}).get();
alert(checkedVals.join(","));
karim79
źródło
3
$ ('input.theClass: selected'). map (function () {return this.value}). get (). join (',');
Fedir RYKHTIK
@Fedir: Twoje polecenie daje on,onw wyniku („włączone” dla każdego zaznaczonego pola wyboru)
Jay
@Jay Musisz ustawić atrybuty wartości swoich pól wyboru, aby uzyskać ich wartość w ciągu oddzielonym przecinkami
Kamran Ali
21
$('input.yourClass:checkbox:checked').each(function () {
    var sThisVal = $(this).val();
});

Otrzymałoby to wszystkie pola wyboru nazwy klasy „twojaKlasa”. Podoba mi się ten przykład, ponieważ używa sprawdzonego selektora jQuery zamiast sprawdzania warunkowego. Osobiście użyłbym również tablicy do przechowywania wartości, a następnie używałbym ich w razie potrzeby, takich jak:

var arr = [];
$('input.yourClass:checkbox:checked').each(function () {
    arr.push($(this).val());
});
alienriver49
źródło
Gdyby zachodziła potrzeba przechowywania wartości w tablicy, .mapmogłaby być przyjemniejszą alternatywą, jak ilustruje odpowiedź karim79.
duplode,
1
dziękuję :) musiałem znaleźć wszystkie zaznaczone pola wyboru, a twoja odpowiedź to robi.
ufk
13

Jeśli chcesz uzyskać wartość wszystkich zaznaczonych pól wyboru jako tablicę:

let myArray = (function() {
    let a = [];
    $(".checkboxes:checked").each(function() {
        a.push(this.value);
    });
    return a;
})()
Faraz Kelhini
źródło
10
 $('input.theclass[type=checkbox]').each(function () {
   var sThisVal = (this.checked ? $(this).val() : "");
 });
Turnia
źródło
8

Nie jestem pewien, czy to pomaga w konkretnej sprawie, i nie jestem pewien, czy w twoim przypadku pola wyboru, które chcesz uwzględnić, są tylko częścią pojedynczego formularza lub div lub tabeli, ale zawsze możesz zaznaczyć wszystkie pola wyboru wewnątrz określonego elementu. Na przykład:

<ul id="selective">
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
 <li><input type="checkbox" value="..." /></li>
</ul>

Następnie, używając następującego jQuery, przechodzi TYLKO przez pola wyboru w obrębie tego UL o id = "selektywne":

$('#selective input:checkbox').each(function () {
 var sThisVal = (this.checked ? $(this).val() : "");
});
Florian Mertens
źródło
7
 $('input.myclass[type=checkbox]').each(function () {
   var sThisVal = (this.checked ? $(this).val() : ""); });

Zobacz selektory klas jQuery .

Liza Daly
źródło
7

Możesz użyć czegoś takiego:
HTML:

<div><input class="yourClass" type="checkbox" value="1" checked></div>
<div><input class="yourClass" type="checkbox" value="2"></div>
<div><input class="yourClass" type="checkbox" value="3" checked></div>
<div><input class="yourClass" type="checkbox" value="4"></div>


JQuery:

$(".yourClass:checkbox").filter(":checked")


Wybierze wartości 1 i 3.

Philip Voloshin
źródło
To najlepsza odpowiedź.
Marcos Buarque
7

Prosty sposób na umieszczenie wszystkich wartości w tablicy

var valores = (function () {
    var valor = [];
    $('input.className[type=checkbox]').each(function () {
        if (this.checked)
            valor.push($(this).val());
    });
    return valor;

})();

console.log(valores);
Caike Bispo
źródło
7

Możesz spróbować w ten sposób

let values = (function() {
                let a = [];
                $(".chkboxes:checked").each(function() {
                    a.push($(this).val());
                });
                return a;
            })();
Bablu Ahmed
źródło
4
<input type="checkbox" id="Checkbox1" class = "chk" value = "1" />
<input type="checkbox" id="Checkbox2" class = "chk" value = "2" />
<input type="checkbox" id="Checkbox3" class = "chk" value = "3" />
<input type="checkbox" id="Checkbox4" class = "chk" value = "4" />
<input type="button" id="demo" value = "Demo" />

<script type = "text/javascript" src = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
    $("#demo").live("click", function () {
        $("input:checkbox[class=chk]:checked").each(function () {
            alert("Id: " + $(this).attr("id") + " Value: " + $(this).val());
        });
    });
</script>

http://www.jqueryfaqs.com/Articles/Get-values-of-all-checked-checkboxes-by-class-name-using-jQuery.aspx

Debendra Dash
źródło
3

Wiem, że ma już wiele świetnych odpowiedzi na to pytanie, ale znalazłem to podczas przeglądania i bardzo łatwo jest z niego korzystać. Pomyślałem, że podzielę się tym, kto szuka.

HTML:

<fieldset>
    <!-- these will be affected by check all -->
    <div><input type="checkbox" class="checkall"> Check all</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
</fieldset>
<fieldset>
    <!-- these won't be affected by check all; different field set -->
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
    <div><input type="checkbox"> Checkbox</div>
</fieldset>

jQuery:

$(function () {
    $('.checkall').on('click', function () {
        $(this).closest('fieldset').find(':checkbox').prop('checked', this.checked);
    });
});

Odniesienie: Najłatwiejszy „Sprawdź wszystko” dzięki jQuery

Tony
źródło
1
$(document).ready(function(){
    $('input.checkD[type="checkbox"]').click(function(){
        if($(this).prop("checked") == true){
            $(this).val('true');
        }
        else if($(this).prop("checked") == false){
            $(this).val('false');
        }
    });
});
kapil sarvesh
źródło
rozważ dodanie komentarza, aby wyjaśnić swoją odpowiedź, aby ułatwić zrozumienie dla niewtajemniczonych
Simas Joneliunas,
-1
$("input[name='<your_name_of_selected_group_checkboxes>']:checked").val()
KEERTHI KN
źródło
1
wyjaśnij, o co chodzi w tym kodzie. Pomoże to innym zrozumieć
Shafin Mahmud