Ustawienie „zaznaczone” dla pola wyboru z jQuery

4127

Chciałbym zrobić coś takiego, aby zaznaczyć checkboxużywającą jQuery :

$(".myCheckBox").checked(true);

lub

$(".myCheckBox").selected(true);

Czy coś takiego istnieje?

tpower
źródło
Bardziej szczegółowe (i bardzo przydatne!) Pytanie: „Jak mogę sprawdzić element w zestawie pól wyboru WARTOŚĆ?”, Myślę, że możemy również omówić tutaj, a poniżej opublikowałem odpowiedź.
Peter Krauss,
Sprawdź inne sposoby, aby to zrobić za pomocą jQuery tutaj stackoverflow.com/a/22019103/1868660
Subodh Ghulaxe
Jeśli potrzebujesz zainicjowanego zdarzenia onchange, to$("#mycheckbox").click();
HumanInDisguise
„Sprawdzanie czegoś” sugeruje przetestowanie tego, więc myślę, że „Zaznaczenie pola wyboru zaznaczonego” jest bardziej przejrzystym i lepszym tytułem.
Alireza,
rekwizyt(); funkcja jest idealną odpowiedzią. Zobacz definicję funkcji - api.jquery.com/prop
yogihosting

Odpowiedzi:

5967

Nowoczesne jQuery

Użyj .prop():

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

DOM API

Jeśli pracujesz tylko z jednym elementem, zawsze możesz uzyskać dostęp do instrumentu bazowego HTMLInputElementi zmodyfikować jego .checkedwłaściwość:

$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;

Korzyścią z używania metod .prop()i .attr()zamiast tego jest to, że będą działać na wszystkich dopasowanych elementach.

jQuery 1.5.xi nowsze

Ta .prop()metoda nie jest dostępna, więc musisz jej użyć .attr().

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

Zauważ, że jest to podejście stosowane w testach jednostkowych jQuery przed wersją 1.6 i jest lepsze niż użycie, $('.myCheckbox').removeAttr('checked');ponieważ ta ostatnia, jeśli pole zostało początkowo zaznaczone, zmieni zachowanie wywołania .reset()w dowolnej formie, która go zawiera - subtelne, ale prawdopodobnie niepożądana zmiana zachowania.

Aby uzyskać więcej informacji, niektóre niepełne omówienie zmian w obsłudze checkedatrybutu / właściwości w przejściu z wersji 1.5.x na wersję 1.6 można znaleźć w informacjach o wersji 1.6 oraz w sekcji Dokumentacja kontra atrybuty ..prop()

Xian
źródło
26
@Xian usunięcie zaznaczonego atrybutu uniemożliwia zresetowanie formularza
mcgrailm
6
Na marginesie, jQuery 1.6.1 powinno naprawić problem, o którym wspomniałem, abyśmy wszyscy mogli w dalszym ciągu korzystać z $ (...).
Prop
19
„Jeśli pracujesz tylko z jednym elementem, zawsze będzie on najszybszy w użyciu DOMElement.checked = true”. Byłoby to jednak nieistotne, ponieważ to tylko jeden element ...
Tyler Crompton
46
Jak mówi Tyler, jest to nieznaczna poprawa wydajności. Dla mnie kodowanie przy użyciu wspólnego interfejsu API czyni go bardziej czytelnym niż mieszanie natywnego interfejsu API i interfejsów API jQuery. Zostałbym przy jQuery.
Charlie Kilian
18
@TylerCrompton - Oczywiście nie chodzi wyłącznie o wydajność, ale robienie $(element).prop('checked')jest kompletnym marnotrawstwem pisania. element.checkedistnieje i należy go używać w przypadkach, w których już maszelement
krasnolud
704

Posługiwać się:

$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);

A jeśli chcesz sprawdzić, czy pole wyboru jest zaznaczone, czy nie:

$('.myCheckbox').is(':checked');
bchhun
źródło
4
sprawdzany jest również $ (selektor). sprawdzane, aby sprawdzić
eomeroff
6
Wypróbowałem ten dokładny kod i nie działało to dla mnie w przypadku pola wyboru zaznacz wszystko / wybierz brak, które musi zaznaczyć i odznaczyć wszystkie, a także sprawdzić ich stan. Zamiast tego spróbowałem odpowiedzi Christophera Harrisa i to załatwiło sprawę.
JD Smith
Dlaczego warto używać „formularza #mycheckbox” zamiast po prostu „#mycheckbox”? Identyfikator jest już unikalny w całym dokumencie, można go wybrać szybciej i łatwiej.
YuriAlbuquerque
@YuriAlbuquerque to był przykład. możesz użyć dowolnego selektora.
bchhun
5
$ (selektor) .checked nie działa. W jQuery nie ma metody „sprawdzonej”.
Brendan Byrd
318

Jest to poprawny sposób sprawdzania i odznaczając pola wyboru z jQuery, jak to jest standard cross-platform, i będzie dopuszczać reposts formularza.

$('.myCheckBox').each(function(){ this.checked = true; });

$('.myCheckBox').each(function(){ this.checked = false; });

Robiąc to, używasz standardów JavaScript do zaznaczania i odznaczania pól wyboru, więc każda przeglądarka, która poprawnie implementuje właściwość „zaznaczone” elementu pola wyboru, uruchomi ten kod bezbłędnie. To powinno być wszystkich głównych przeglądarek, ale nie jestem w stanie przetestować poprzedni Internet Explorer 9.

Problem (jQuery 1.6):

Gdy użytkownik kliknie pole wyboru, to pole wyboru przestaje odpowiadać na zmiany atrybutu „zaznaczone”.

Oto przykład atrybutu checkbox, który nie wykonał zadania po tym, jak ktoś kliknął pole wyboru (dzieje się tak w Chrome).

Skrzypce

Rozwiązanie:

Korzystając z właściwości JavaScript „zaznaczonej” w elementach DOM , jesteśmy w stanie rozwiązać problem bezpośrednio, zamiast próbować zmanipulować DOM do robienia tego, co chcemy .

Skrzypce

Ta wtyczka zmieni właściwość zaznaczenia dowolnych elementów wybranych przez jQuery oraz pomyślnie zaznaczy i odznacz pola wyboru we wszystkich okolicznościach. Chociaż może się to wydawać nadmiernym obciążeniem, poprawi komfort korzystania z witryny i zapobiegnie frustracji użytkowników.

(function( $ ) {
    $.fn.checked = function(value) {
        if(value === true || value === false) {
            // Set the value of the checkbox
            $(this).each(function(){ this.checked = value; });
        } 
        else if(value === undefined || value === 'toggle') {
            // Toggle the checkbox
            $(this).each(function(){ this.checked = !this.checked; });
        }

        return this;
    };
})( jQuery );

Alternatywnie, jeśli nie chcesz używać wtyczki, możesz użyć następujących fragmentów kodu:

// Check
$(':checkbox').prop('checked', true);

// Un-check
$(':checkbox').prop('checked', false);

// Toggle
$(':checkbox').prop('checked', function (i, value) {
    return !value;
});
cwharris
źródło
5
W swoim pierwszym przykładzie JSFiddle powinieneś używać removeAttr('checked')zamiastattr('checked', false)
Daniel X Moore
4
@DanielXMoore, omijasz ten problem. Przykładem było pokazanie, że po kliknięciu pola wyboru przez użytkownika przeglądarka nie odpowiadachecked zmiany atrybutów, niezależnie od metody ich zmiany.
cwharris
3
@ChristopherHarris Ok, masz rację, tęskniłem. Od wersji jQuery 1.6 nie powinieneś jednak używać metody .prop? $('.myCheckBox').prop('checked', true)W ten sposób automatycznie zastosuje się do całego zestawu dopasowanych elementów (tylko przy ustawianiu, uzyskanie jest wciąż tylko pierwszym)
Daniel X Moore
Tak. propjest zdecydowanie odpowiednim sposobem ustawiania atrybutów elementu.
cwharris
@ChristopherHarris, dodałem to, czego potrzebowałem do wtyczki, aby zapewnić pewną elastyczność parametrów. Ułatwiło to przetwarzanie inline bez konwersji typu. Zwłaszcza z różnych baz danych z „pomysłami” na temat tego, co jest „prawdziwe”. Skrzypce: jsfiddle.net/Cyberjetx/vcp96
Joe Johnston
147

Możesz to zrobić

$('.myCheckbox').attr('checked',true) //Standards compliant

lub

$("form #mycheckbox").attr('checked', true)

Jeśli masz niestandardowy kod w zdarzeniu onclick dla pola wyboru, które chcesz uruchomić, użyj tego:

$("#mycheckbox").click();

Możesz odznaczyć, usuwając całkowicie atrybut:

$('.myCheckbox').removeAttr('checked')

Możesz zaznaczyć wszystkie pola wyboru w ten sposób:

$(".myCheckbox").each(function(){
    $("#mycheckbox").click()
});
Micheasz
źródło
możesz także przejść do $ („# myTable input: checkbox”). each (...);
Chris Brandsma
Możesz także iść$(".myCheckbox").click()
RobertPitt
3
@Michah usunięcie zaznaczonego atrybutu uniemożliwia zresetowanie formularza
mcgrailm
12
Ta odpowiedź jest nieaktualna, ponieważ używa .attrzamiast .prop.
Blazemonger,
$("#mycheckbox").click();pracował dla mnie, jak ja słuchałem i zmian razie zbyt .attri .propnie wydarzenie zmiana ogień.
Damodar Bashyal
80

Możesz także rozszerzyć obiekt $ .fn o nowe metody:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

Następnie możesz po prostu zrobić:

$(":checkbox").check();
$(":checkbox").uncheck();

Możesz też nadać im więcej unikalnych nazw, takich jak mycheck () i myuncheck () na wypadek, gdybyś używał innej biblioteki, która używa tych nazw.

livefree75
źródło
5
@ livfree75 usunięcie zaznaczonego atrybutu uniemożliwia zresetowanie formularza
mcgrailm
5
Ta odpowiedź jest nieaktualna, ponieważ używa .attrzamiast .prop.
Blazemonger,
64
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();

Ostatni wywoła zdarzenie kliknięcia dla pola wyboru, pozostałe nie. Więc jeśli masz niestandardowy kod w zdarzeniu onclick dla pola wyboru, które chcesz uruchomić, użyj ostatniego.

Chris Brandsma
źródło
4
pierwsza nie powiedzie się ... zaznaczone nie jest członkiem obiektu jquery
redsquare
5
Ta odpowiedź jest nieaktualna, ponieważ używa .attrzamiast .prop.
Blazemonger,
IMO clickwydarzenie jest niewiarygodne w Firefox i Edge.
Vahid Amiri
62

Aby zaznaczyć pole wyboru, należy użyć

 $('.myCheckbox').attr('checked',true);

lub

 $('.myCheckbox').attr('checked','checked');

i aby odznaczyć pole wyboru, zawsze należy ustawić na false:

 $('.myCheckbox').attr('checked',false);

Jeśli zrobisz

  $('.myCheckbox').removeAttr('checked')

usuwa atrybut razem i dlatego nie będzie można zresetować formularza.

ZŁY DEMO jQuery 1.6 . Myślę, że to jest zepsute. Dla 1.6 zamierzam napisać o tym nowy post.

NOWA WERSJA DEMO jQuery 1.5.2 działa w Chrome.

Oba dema używają

$('#tc').click(function() {
    if ( $('#myCheckbox').attr('checked')) {
        $('#myCheckbox').attr('checked', false);
    } else {
        $('#myCheckbox').attr('checked', 'checked');
    }
});
McGrailm
źródło
1
To jest niedokładne. ustawienie atrybutu „zaznaczone” na „” nie usunie zaznaczenia pól wyboru przynajmniej w chrome.
cwharris
@xixonia Testowałem przed opublikowaniem skrzypce nie działa, ponieważ nie zmieniłeś menu po lewej stronie, aby uwzględnić jquery
mcgrailm
1
mcgralim - w 1.6 jeszcze łatwiejsze .... $(".mycheckbox").prop("checked", true/false)
krasnolud
2
@ MarkAmery wspomniałeś, że mój post nic nie dodał w momencie postu, ale jest to dokładne. Jeśli spojrzysz na historię zaakceptowanej odpowiedzi, przekonasz się, że sugerują usunięcie elementu. Co uniemożliwia zresetowanie formularza i dlatego na początku pisałem.
mcgrailm,
1
@mcgrailm Poszedłem naprzód i zmodyfikowałem zaakceptowaną odpowiedź w świetle twoich uwag. Jeśli chcesz rzucić na to okiem i sprawdzić, czy dobrze wygląda w obecnym stanie, doceniłbym to. Jeszcze raz przepraszam za ostrą krytykę, która przynajmniej częściowo była bardzo myląca.
Mark Amery
51

Wybiera elementy, które mają określony atrybut o wartości zawierającej podany podciąg „ckbItem”:

$('input[name *= ckbItem]').prop('checked', true);

Wybiera wszystkie elementy, które zawierają atrybut ckbItem w swoim atrybucie nazwy.

Abou-Emish
źródło
46

Zakładając, że pytanie brzmi ...

Jak mogę zaznaczyć pole wyboru WEDŁUG WARTOŚCI?

Pamiętaj, że w typowym zestawie pól wyboru wszystkie znaczniki wejściowe mają tę samą nazwę, różnią się atrybutemvalue : dla każdego wejścia zestawu nie ma identyfikatora.

Odpowiedź Xiana można rozszerzyć za pomocą bardziej szczegółowego selektora , używając następującego wiersza kodu:

$("input.myclass[name='myname'][value='the_value']").prop("checked", true);
Peter Krauss
źródło
45

Brakuje mi rozwiązania. Zawsze będę używać:

if ($('#myCheckBox:checked').val() !== undefined)
{
    //Checked
}
else
{
    //Not checked
}
Overbeeke
źródło
3
To nie odpowiada na pytanie (pytanie dotyczy ustawienia, czy pole wyboru jest zaznaczone, a nie ustalenia, czy pole wyboru jest zaznaczone). Jest to również dość brzydki sposób określania, czy pole wyboru jest zaznaczone (po pierwsze, wykorzystujesz nieoczywisty fakt, .val()który zawsze powróci undefinedpo wywołaniu 0 elementów w celu wykrycia, że ​​obiekt jQuery jest pusty, kiedy możesz po prostu sprawdź .lengthzamiast tego) - więcej informacji można znaleźć na stackoverflow.com/questions/901712/ ...
Mark Amery
42

Aby zaznaczyć pole wyboru przy użyciu jQuery 1.6 lub wyższej, po prostu wykonaj następujące czynności:

checkbox.prop('checked', true);

Aby odznaczyć, użyj:

checkbox.prop('checked', false);

Oto, co lubię używać do przełączania pola wyboru za pomocą jQuery:

checkbox.prop('checked', !checkbox.prop('checked'));

Jeśli używasz jQuery 1.5 lub nowszej:

checkbox.attr('checked', true);

Aby odznaczyć, użyj:

checkbox.attr('checked', false);
Ramon de Jesus
źródło
37

Oto sposób na zrobienie tego bez jQuery

function addOrAttachListener(el, type, listener, useCapture) {
  if (el.addEventListener) {
    el.addEventListener(type, listener, useCapture);
  } else if (el.attachEvent) {
    el.attachEvent("on" + type, listener);
  }
};

addOrAttachListener(window, "load", function() {
  var cbElem = document.getElementById("cb");
  var rcbElem = document.getElementById("rcb");
  addOrAttachListener(cbElem, "click", function() {
    rcbElem.checked = cbElem.checked;
  }, false);
}, false);
<label>Click Me!
  <input id="cb" type="checkbox" />
</label>
<label>Reflection:
  <input id="rcb" type="checkbox" />
</label>

Xitalogy
źródło
31

Oto kod zaznaczony i niezaznaczony za pomocą przycisku:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).attr('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).attr('checked', false); unset=1; }
        });
        set=unset;
    });
});

Aktualizacja: Oto ten sam blok kodu przy użyciu nowszej metody prop Jquery 1.6+, która zastępuje attr:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).prop('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).prop('checked', false); unset=1; }
        });
        set=unset;
    });
});
starjahid
źródło
4
Ta odpowiedź jest nieaktualna, ponieważ używa .attrzamiast .prop.
Blazemonger
30

Spróbuj tego:

$('#checkboxid').get(0).checked = true;  //For checking

$('#checkboxid').get(0).checked = false; //For unchecking
prashanth
źródło
29

Możemy użyć elementObjectz jQuery do sprawdzenia atrybutu:

$(objectElement).attr('checked');

Możemy użyć tego dla wszystkich wersji jQuery bez żadnego błędu.

Aktualizacja: Jquery 1.6+ ma nową metodę prop, która zastępuje attr, np .:

$(objectElement).prop('checked');
Prasanth P.
źródło
2
Ta odpowiedź jest nieaktualna, ponieważ używa .attrzamiast .prop.
Blazemonger
25

Jeśli używasz PhoneGap do tworzenia aplikacji i masz wartość przycisku, którą chcesz natychmiast pokazać, pamiętaj, aby to zrobić

$('span.ui-[controlname]',$('[id]')).text("the value");

Odkryłem, że bez zakresu interfejs nie aktualizuje się bez względu na to, co robisz.

Clement Ho
źródło
25

Oto kod i wersja demonstracyjna sprawdzania wielu pól wyboru ...

http://jsfiddle.net/tamilmani/z8TTt/

$("#check").on("click", function () {

    var chk = document.getElementById('check').checked;
    var arr = document.getElementsByTagName("input");

    if (chk) {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = true;
        }
    } else {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = false;
        }
    }
});
tamilmani
źródło
- 1; mieszanie selektorów jQuery jak $("#check")z surowymi wywołaniami DOM API jak document.getElementsByTagName("input")wydaje mi się nieeleganckie, szczególnie biorąc pod uwagę, że formożna tutaj uniknąć pętli .prop(). Niezależnie od tego jest to kolejna późna odpowiedź, która nie dodaje nic nowego.
Mark Amery
20

Inne możliwe rozwiązanie:

    var c = $("#checkboxid");
    if (c.is(":checked")) {
         $('#checkboxid').prop('checked', false);
    } else {
         $('#checkboxid').prop('checked', true);
    }
Muhammad Aamir Ali
źródło
19

Jak powiedział @ livefree75:

jQuery 1.5.xi nowsze

Możesz także rozszerzyć obiekt $ .fn o nowe metody:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

Ale w nowych wersjach jQuery musimy użyć czegoś takiego:

jQuery 1.6+

    (function($)  {
       $.fn.extend({
          check : function()  {
             return this.filter(":radio, :checkbox").prop("checked", true);
          },
          uncheck : function()  {
             return this.filter(":radio, :checkbox").prop("checked",false);
          }
       });
    }(jQuery));

Następnie możesz po prostu zrobić:

    $(":checkbox").check();
    $(":checkbox").uncheck();
Ardalan Shahgholi
źródło
18

Jeśli używasz telefonu komórkowego i chcesz, aby interfejs się zaktualizował i wyświetlał pole wyboru jako niezaznaczone, użyj następujących poleceń:

$("#checkbox1").prop('checked', false).checkboxradio("refresh");
Matt Peacock
źródło
18

Uważaj na wycieki pamięci w Internet Explorerze wcześniejszym niż Internet Explorer 9 , ponieważ dokumentacja jQuery mówi :

W programie Internet Explorer wcześniejszym niż wersja 9 użycie .prop () w celu ustawienia właściwości elementu DOM na wartość inną niż prosta wartość pierwotna (liczba, łańcuch lub wartość logiczna) może powodować wycieki pamięci, jeśli właściwość nie zostanie usunięta (użycie .removeProp ( )) przed usunięciem elementu DOM z dokumentu. Aby bezpiecznie ustawić wartości dla obiektów DOM bez wycieków pamięci, użyj .data ().

naor
źródło
2
Nie ma to znaczenia, ponieważ wykorzystują wszystkie (poprawne) odpowiedzi .prop('checked',true).
Blazemonger
Nie jestem pewien, czy zrozumiałem twój komentarz. Wciąż istnieje w dokumentacji jQuery. Czy sugerujesz, że w IE <9 nie ma wycieku pamięci?
naor
2
Istnieje ponieważ ma wyciek pamięci w tym przypadku jest ustawienie go do prostego wartości pierwotnej (Boolean).
Blazemonger,
18

Dla jQuery 1.6+

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

Dla jQuery 1.5.xi niższych

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

Sprawdzić,

$('.myCheckbox').removeAttr('checked');
logan
źródło
17

Aby zaznaczyć i odznaczyć

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
jj2422
źródło
3
- 1; to nie dodaje żadnej wartości do już rozdętego wątku. Kod tutaj jest dokładnie taki sam jak zaakceptowana odpowiedź.
Mark Amery
16
$('controlCheckBox').click(function(){
    var temp = $(this).prop('checked');
    $('controlledCheckBoxes').prop('checked', temp);
});
mahmoh
źródło
4
- 1 za to, że jest to odpowiedź tylko na kod, nie odpowiada bezpośrednio na pytanie i nie dodaje niczego, czego inne odpowiedzi jeszcze nie obejmowały.
Mark Amery
15

Jest to prawdopodobnie najkrótsze i najłatwiejsze rozwiązanie:

$(".myCheckBox")[0].checked = true;

lub

$(".myCheckBox")[0].checked = false;

Jeszcze krótszy byłby:

$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;

Oto także jsFiddle .

Friedrich
źródło
14

Zwykły JavaScript jest bardzo prosty i znacznie mniejszy:

var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
    elements[i].checked = true;
}

Przykład tutaj

Alex W.
źródło
@MarkAmery Akceptowana odpowiedź nie obejmuje tego, jak to zrobić bez jQuery. Moja odpowiedź stanowi dodatkową korzyść w stosunku do przyjętej odpowiedzi.
Alex W
13

Nie mogłem go uruchomić przy użyciu:

$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');

Zarówno prawda, jak i fałsz zaznaczałyby pole wyboru. Dla mnie zadziałało:

$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', '');     // For unchecking
fredcrs
źródło
16
nie powinno być truei falsenie 'true'a 'false'?
tpower
9
„Nie działało”, ponieważ 'false'zostało przekonwertowane na wartość boolowską, co spowodowało, że true- pusty łańcuch ocenia, falsewięc „działał”. Zobacz to skrzypce na przykład, co mam na myśli.
Shadow Wizard is Ear For You
@ chris97ong Cofnąłem twoją edycję; gdy ktoś mówi: „Nie używaj kodu poniżej, ponieważ nie działa”, poprawienie tego kodu, pozostawiając komentarz stwierdzający, że nie działa, jest szkodliwe - zwłaszcza gdy łamie wyjaśnienie w komentarzach, dlaczego kod nie jest działa. To powiedziawszy, ta odpowiedź jest nadal nieco zagmatwana i zasługuje na głosowanie z powodów podanych przez tpower i ShadowWizard.
Mark Amery
1
używaj wartości true i false dla boolean, nie używaj „true” ani „false” (łańcuchy).
Jone Polvora
13

Po zaznaczeniu pola wyboru, takiego jak;

$('.className').attr('checked', 'checked')

to może nie wystarczyć. Powinieneś także wywołać funkcję poniżej;

$('.className').prop('checked', 'true')

Zwłaszcza po usunięciu atrybutu zaznaczonego pola wyboru.

Serhat Koroglu
źródło
11

Oto pełna odpowiedź przy użyciu jQuery

Testuję to i działa w 100%: D

    // when the button (select_unit_button) is clicked it returns all the checed checkboxes values 
    $("#select_unit_button").on("click", function(e){

             var arr = [];

             $(':checkbox:checked').each(function(i){
                 arr[i] = $(this).val(); // u can get id or anything else
             });

              //console.log(arr); // u can test it using this in google chrome
    });

źródło
10

W jQuery

if($("#checkboxId").is(':checked')){
    alert("Checked");
}

lub

if($("#checkboxId").attr('checked')==true){
    alert("Checked");
}

W JavaScript

if (document.getElementById("checkboxID").checked){
    alert("Checked");
}
ijarlax
źródło
7
To nie odpowiada na pytanie.
Samuel Liew
2
Ta odpowiedź jest nieaktualna, ponieważ używa .attrzamiast .prop.
Blazemonger,