Setzen Sie mit jQuery ein Kontrollkästchen für ein Kontrollkästchen

4129

Ich möchte so etwas tun, um checkboxmit jQuery ein Häkchen zu setzen :

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

oder

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

Gibt es so etwas?

tpower
quelle
Eine spezifischere (und sehr nützliche!) Frage: "Wie überprüfe ich ein Element in einem Kontrollkästchen nach Wert?", Denke ich, können wir auch hier diskutieren, und ich habe unten eine Antwort gepostet.
Peter Krauss
Überprüfen Sie andere Möglichkeiten, dies mit jQuery hier zu tun stackoverflow.com/a/22019103/1868660
Subodh Ghulaxe
Wenn Sie das Ereignis onchange auslösen müssen, ist es$("#mycheckbox").click();
HumanInDisguise
"Etwas überprüfen" schlägt vor, es zu testen, daher denke ich, dass "Ein Kontrollkästchen aktivieren" ein klarerer und besserer Titel ist.
Alireza
Stütze(); Funktion ist die perfekte Antwort. Siehe die Funktionsdefinition - api.jquery.com/prop
yogihosting

Antworten:

5969

Moderne jQuery

Verwendung .prop():

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

DOM-API

Wenn Sie nur mit einem Element arbeiten, können Sie jederzeit auf das zugrunde liegende Element zugreifen HTMLInputElementund dessen .checkedEigenschaft ändern :

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

Der Vorteil der Verwendung der Methoden .prop()und .attr()stattdessen besteht darin, dass sie mit allen übereinstimmenden Elementen arbeiten.

jQuery 1.5.x und niedriger

Die .prop()Methode ist nicht verfügbar, daher müssen Sie sie verwenden .attr().

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

Beachten Sie, dass dies der Ansatz ist, der von jQuerys Komponententests vor Version 1.6 verwendet wird und der Verwendung vorzuziehen ist, $('.myCheckbox').removeAttr('checked');da letzterer, wenn das Kontrollkästchen ursprünglich aktiviert wurde, das Verhalten eines Aufrufs in einem .reset()beliebigen Formular ändert , das ihn enthält - ein subtiler, aber wahrscheinlich unerwünschte Verhaltensänderung.

Weitere checkedInformationen zu den Änderungen an der Behandlung des Attributs / der Eigenschaft beim Übergang von 1.5.x zu 1.6 finden Sie in den Versionshinweisen zu Version 1.6 und im Abschnitt Attribute vs. Eigenschaften der .prop()Dokumentation .

Xian
quelle
26
@Xian das Entfernen des geprüften Attributs macht es unmöglich, das Formular zurückzusetzen
mcgrailm
6
Als Randnotiz sollte jQuery 1.6.1 das von mir erwähnte Problem beheben, damit wir praktisch immer noch $ (...) verwenden können. Prop (...)
cwharris
19
"Wenn Sie nur mit einem Element arbeiten, ist es immer am schnellsten zu verwenden. DOMElement.checked = true" Aber es wäre vernachlässigbar, weil es nur ein Element ist ...
Tyler Crompton
46
Wie Tyler sagt, ist es eine vernachlässigbare Verbesserung der Leistung. Für mich ist das Codieren mit einer gemeinsamen API lesbarer als das Mischen von nativen API- und jQuery-APIs. Ich würde bei jQuery bleiben.
Charlie Kilian
18
@ TylerCrompton - Natürlich geht es nicht nur um Leistung, aber das Tun $(element).prop('checked')ist eine völlige Verschwendung von Eingabe. element.checkedexistiert und sollte in den Fällen verwendet werden, in denen Sie bereits habenelement
Gnarf
704

Verwenden:

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

Und wenn Sie überprüfen möchten, ob ein Kontrollkästchen aktiviert ist oder nicht:

$('.myCheckbox').is(':checked');
bchhun
quelle
4
auch $ (Selektor) .checked to check ist
aktiviert
6
Ich habe genau diesen Code ausprobiert und es hat bei mir nicht funktioniert, wenn das Kontrollkästchen Alle auswählen / Keine auswählen aktiviert ist, bei dem alle Elemente aktiviert und deaktiviert sowie ihr Status überprüft werden müssen. Stattdessen habe ich die Antwort von @Christopher Harris ausprobiert und das hat den Trick getan.
JD Smith
Warum "form #mycheckbox" anstelle von "#mycheckbox" verwenden? Die ID ist bereits im gesamten Dokument eindeutig. Sie kann schneller und einfacher direkt ausgewählt werden.
YuriAlbuquerque
@ YuriAlbuquerque war es ein Beispiel. Sie können jeden gewünschten Selektor verwenden.
Bchhun
5
$ (Selektor) .checked funktioniert nicht. In jQuery gibt es keine 'geprüfte' Methode.
Brendan Byrd
318

Dies ist die richtige Art und Weise zu kontrollieren und Kontrollkästchen mit jQuery unchecking, wie es Cross-Plattform - Standard ist, und wird Form reposts ermöglichen.

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

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

Auf diese Weise verwenden Sie JavaScript-Standards zum Aktivieren und Deaktivieren von Kontrollkästchen, sodass jeder Browser, der die Eigenschaft "checked" des Checkbox-Elements ordnungsgemäß implementiert, diesen Code fehlerfrei ausführt. Dies sollten alle gängigen Browser sein, aber ich kann vor Internet Explorer 9 keine Tests durchführen.

Das Problem (jQuery 1.6):

Sobald ein Benutzer auf ein Kontrollkästchen klickt, reagiert dieses Kontrollkästchen nicht mehr auf die "aktivierten" Attributänderungen.

Hier ist ein Beispiel für das Kontrollkästchenattribut, das den Job nicht ausführt, nachdem jemand auf das Kontrollkästchen geklickt hat (dies geschieht in Chrome).

Geige

Die Lösung:

Durch die Verwendung der "geprüften" Eigenschaft von JavaScript für die DOM- Elemente können wir das Problem direkt lösen, anstatt zu versuchen, das DOM so zu manipulieren, dass es das tut, was wir wollen .

Geige

Dieses Plugin ändert die überprüfte Eigenschaft aller von jQuery ausgewählten Elemente und aktiviert und deaktiviert die Kontrollkästchen unter allen Umständen erfolgreich. Dies scheint zwar eine übermäßige Lösung zu sein, verbessert jedoch die Benutzererfahrung Ihrer Website und hilft, Frustrationen der Benutzer zu vermeiden.

(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 );

Wenn Sie kein Plugin verwenden möchten, können Sie alternativ die folgenden Codefragmente verwenden:

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

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

// Toggle
$(':checkbox').prop('checked', function (i, value) {
    return !value;
});
cwharris
quelle
5
In Ihrem ersten JSFiddle-Beispiel sollten Sie removeAttr('checked')eher alsattr('checked', false)
Daniel X Moore
4
@ DanielXMoore, Sie umgehen das Problem. Das Beispiel sollte zeigen, dass der Browser nach checkeddem Klicken auf das Kontrollkästchen durch den Benutzer nicht mehr auf Attributänderungen reagiert , unabhängig von der Methode, mit der sie geändert wurden.
Cwharris
3
@ChristopherHarris Ok, du hast recht, das habe ich verpasst. Ab jQuery 1.6 sollten Sie die .prop-Methode jedoch nicht verwenden? $('.myCheckBox').prop('checked', true)Auf diese Weise wird es automatisch auf den gesamten Satz übereinstimmender Elemente angewendet (nur beim Einstellen ist das Erhalten immer noch das erste)
Daniel X Moore
Ja. propist definitiv die geeignete Methode, um Attribute für ein Element festzulegen.
Cwharris
@ChristopherHarris, ich habe dem Plugin hinzugefügt, was ich brauchte, um eine gewisse Parameterflexibilität zu ermöglichen. Dies erleichterte die Inline-Verarbeitung ohne die Typkonvertierung. Vor allem aus unterschiedlichen Datenbanken mit "Ideen" darüber, was "wahr" ist. Geige: jsfiddle.net/Cyberjetx/vcp96
Joe Johnston
147

Du kannst tun

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

oder

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

Wenn Sie im onclick-Ereignis benutzerdefinierten Code für das Kontrollkästchen haben, das Sie auslösen möchten, verwenden Sie stattdessen diesen:

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

Sie können das Kontrollkästchen deaktivieren, indem Sie das Attribut vollständig entfernen:

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

Sie können alle Kontrollkästchen wie folgt aktivieren:

$(".myCheckbox").each(function(){
    $("#mycheckbox").click()
});
Micah
quelle
Sie können auch $ ("# myTable input: checkbox") gehen. each (...);
Chris Brandsma
Sie können auch gehen$(".myCheckbox").click()
RobertPitt
3
@Michah das Entfernen des markierten Attributs macht es unmöglich, das Formular zurückzusetzen
mcgrailm
12
Diese Antwort ist veraltet, da sie .attranstelle von verwendet wird .prop.
Blazemonger
$("#mycheckbox").click();für mich gearbeitet , wie ich Änderungsereignis zu zuhörte und .attr& .propfired Änderungsereignis.
Damodar Bashyal
80

Sie können das $ .fn-Objekt auch mit neuen Methoden erweitern:

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

Dann können Sie einfach tun:

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

Oder Sie möchten ihnen eindeutigere Namen wie mycheck () und myuncheck () geben, falls Sie eine andere Bibliothek verwenden, die diese Namen verwendet.

livefree75
quelle
5
@ livfree75 Das Entfernen des markierten Attributs macht es unmöglich, das Formular zurückzusetzen
mcgrailm
5
Diese Antwort ist veraltet, da sie .attranstelle von verwendet wird .prop.
Blazemonger
64
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();

Der letzte löst das Klickereignis für das Kontrollkästchen aus, die anderen nicht. Wenn Sie also im onclick-Ereignis benutzerdefinierten Code für das Kontrollkästchen haben, das Sie auslösen möchten, verwenden Sie den letzten.

Chris Brandsma
quelle
4
top one wird fehlschlagen ... markiert ist kein jquery-Objektmitglied
redsquare
5
Diese Antwort ist veraltet, da sie .attranstelle von verwendet wird .prop.
Blazemonger
IMO ist das clickEreignis in Firefox und Edge unzuverlässig.
Vahid Amiri
62

Um ein Kontrollkästchen zu aktivieren, sollten Sie verwenden

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

oder

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

und um ein Kontrollkästchen zu deaktivieren, sollten Sie es immer auf false setzen:

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

Wenn Sie tun

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

Dadurch wird das Attribut insgesamt entfernt, und Sie können das Formular daher nicht zurücksetzen.

BAD DEMO jQuery 1.6 . Ich denke das ist kaputt. Für 1.6 werde ich einen neuen Beitrag dazu verfassen.

NEUE ARBEITSDEMO jQuery 1.5.2 funktioniert in Chrome.

Beide Demos verwenden

$('#tc').click(function() {
    if ( $('#myCheckbox').attr('checked')) {
        $('#myCheckbox').attr('checked', false);
    } else {
        $('#myCheckbox').attr('checked', 'checked');
    }
});
mcgrailm
quelle
1
Das ist ungenau. Wenn Sie das Attribut 'checked' auf '' setzen, werden die Kontrollkästchen in mindestens Chrome nicht deaktiviert.
Cwharris
@xixonia Ich habe getestet, bevor ich Ihre Geige gepostet habe, funktioniert nicht, weil Sie das Menü auf der linken Seite nicht geändert haben, um jquery
mcgrailm
1
mcgralim - in 1.6 ist es noch einfacher .... $(".mycheckbox").prop("checked", true/false)
Gnarf
2
@ MarkAmery Sie haben erwähnt, dass mein Beitrag zum Zeitpunkt des Beitrags nichts hinzugefügt hat, aber das ist korrekt. Wenn Sie sich den Verlauf der akzeptierten Antwort ansehen, werden Sie feststellen, dass sie vorschlagen, das Element zu entfernen. Das macht es unmöglich, das Formular zurückzusetzen, weshalb ich zuerst gepostet habe.
Mcgrailm
1
@mcgrailm Ich habe die akzeptierte Antwort im Lichte Ihrer Bemerkungen geändert. Wenn Sie ein Auge darauf werfen und prüfen möchten, ob es in seinem aktuellen Zustand gut aussieht, würde ich das begrüßen. Ich entschuldige mich noch einmal dafür, dass ich scharfe Kritik geäußert habe, die zumindest teilweise sehr fehlgeleitet war.
Mark Amery
51

Dadurch werden Elemente ausgewählt, die das angegebene Attribut mit einem Wert haben, der den angegebenen Teilstring "ckbItem" enthält:

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

Es werden alle Elemente ausgewählt, deren Namensattribut ckbItem enthält.

Abou-Emish
quelle
46

Angenommen, die Frage ist ...

Wie aktiviere ich ein Kontrollkästchen nach Wert?

Denken Sie daran, dass in einem typischen Kontrollkästchensatz alle Eingabe-Tags denselben Namen haben und sich durch das Attribut unterscheidenvalue : Für jede Eingabe des Satzes gibt es keine ID.

Die Antwort von Xian kann mit der folgenden Codezeile um einen spezifischeren Selektor erweitert werden:

$("input.myclass[name='myname'][value='the_value']").prop("checked", true);
Peter Krauss
quelle
45

Mir fehlt die Lösung. Ich werde immer verwenden:

if ($('#myCheckBox:checked').val() !== undefined)
{
    //Checked
}
else
{
    //Not checked
}
Overbeeke
quelle
3
Dies beantwortet die Frage nicht (bei der Frage geht es darum, festzulegen, ob ein Kontrollkästchen aktiviert ist, und nicht zu bestimmen, ob ein Kontrollkästchen aktiviert ist). Es ist auch eine ziemlich hässliche Methode, um festzustellen, ob das Kontrollkästchen aktiviert ist (zum einen nutzen Sie die nicht selbstverständliche Tatsache, .val()die undefinedbeim Aufruf von 0 Elementen immer zurückkehrt , um zu erkennen, dass ein jQuery-Objekt leer ist, wenn Sie könnten Überprüfen Sie .lengthstattdessen einfach ) - siehe stackoverflow.com/questions/901712/… für besser lesbare Ansätze.
Mark Amery
42

Um ein Kontrollkästchen mit jQuery 1.6 oder höher zu aktivieren, gehen Sie wie folgt vor :

checkbox.prop('checked', true);

Verwenden Sie zum Deaktivieren:

checkbox.prop('checked', false);

Folgendes möchte ich verwenden, um ein Kontrollkästchen mit jQuery umzuschalten:

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

Wenn Sie jQuery 1.5 oder niedriger verwenden:

checkbox.attr('checked', true);

Verwenden Sie zum Deaktivieren:

checkbox.attr('checked', false);
Ramon de Jesus
quelle
37

Hier ist eine Möglichkeit, dies ohne jQuery zu tun

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>

Xitalogie
quelle
31

Hier ist der Code zum Aktivieren und Deaktivieren mit einer Schaltfläche:

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

Update: Hier ist der gleiche Codeblock mit der neueren Jquery 1.6+ Prop-Methode, die attr ersetzt:

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
quelle
4
Diese Antwort ist veraltet, da sie .attranstelle von verwendet wird .prop.
Blazemonger
30

Versuche dies:

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

$('#checkboxid').get(0).checked = false; //For unchecking
Prashanth
quelle
29

Wir können elementObjectmit jQuery verwenden, um das Attribut zu überprüfen:

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

Wir können dies für alle jQuery-Versionen ohne Fehler verwenden.

Update: Jquery 1.6+ hat die neue Requisitenmethode, die attr ersetzt, z.

$(objectElement).prop('checked');
Prasanth P.
quelle
2
Diese Antwort ist veraltet, da sie .attranstelle von verwendet wird .prop.
Blazemonger
25

Wenn Sie PhoneGap für die Anwendungsentwicklung verwenden und einen Wert auf der Schaltfläche haben, den Sie sofort anzeigen möchten, denken Sie daran, dies zu tun

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

Ich habe festgestellt, dass die Benutzeroberfläche ohne die Spanne nicht aktualisiert wird, egal was Sie tun.

Clement Ho
quelle
25

Hier ist der Code und die Demo zum Aktivieren mehrerer Kontrollkästchen ...

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
quelle
- 1; Das Mischen von jQuery-Selektoren wie $("#check")mit rohen DOM-API-Aufrufen document.getElementsByTagName("input")scheint mir unelegant zu sein, insbesondere angesichts der Tatsache, dass die forSchleifen hier durch die Verwendung vermieden werden könnten .prop(). Unabhängig davon ist dies eine weitere späte Antwort, die nichts Neues hinzufügt.
Mark Amery
20

Eine andere mögliche Lösung:

    var c = $("#checkboxid");
    if (c.is(":checked")) {
         $('#checkboxid').prop('checked', false);
    } else {
         $('#checkboxid').prop('checked', true);
    }
Muhammad Aamir Ali
quelle
19

Wie @ livefree75 sagte:

jQuery 1.5.x und niedriger

Sie können das $ .fn-Objekt auch mit neuen Methoden erweitern:

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

In neuen Versionen von jQuery müssen wir jedoch Folgendes verwenden:

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

Dann können Sie einfach tun:

    $(":checkbox").check();
    $(":checkbox").uncheck();
Ardalan Shahgholi
quelle
18

Wenn Sie Mobile verwenden und möchten, dass die Benutzeroberfläche aktualisiert wird und das Kontrollkästchen als deaktiviert angezeigt wird, verwenden Sie Folgendes:

$("#checkbox1").prop('checked', false).checkboxradio("refresh");
Matt Peacock
quelle
18

Beachten Sie Speicherlecks in Internet Explorer vor Internet Explorer 9 , wie in der jQuery-Dokumentation angegeben :

In Internet Explorer vor Version 9 kann die Verwendung von .prop () zum Festlegen einer DOM-Elementeigenschaft auf einen anderen Wert als einen einfachen Grundwert (Zahl, Zeichenfolge oder Boolescher Wert) zu Speicherverlusten führen, wenn die Eigenschaft nicht entfernt wird (mithilfe von .removeProp () )) bevor das DOM-Element aus dem Dokument entfernt wird. Verwenden Sie .data (), um Werte für DOM-Objekte ohne Speicherverlust sicher festzulegen.

naor
quelle
2
Dies ist irrelevant, da alle (richtigen) Antworten verwendet werden .prop('checked',true).
Blazemonger
Ich bin mir nicht sicher, ob ich Ihren Kommentar verstanden habe. Dieser ist in der jQuery-Dokumentation noch vorhanden. Bedeuten Sie, dass im IE <9 kein Speicherverlust vorliegt?
Naor
2
Es gibt kein Speicherleck in diesem Fall, da wir werden es auf einen einfachen Grundwert (Boolean) einstellen.
Blazemonger
18

Für jQuery 1.6+

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

Für jQuery 1.5.x und niedriger

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

Überprüfen,

$('.myCheckbox').removeAttr('checked');
Logan
quelle
17

Zum Aktivieren und Deaktivieren

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
jj2422
quelle
3
- 1; Dies fügt einem bereits aufgeblähten Thread überhaupt keinen Wert hinzu. Der Code hier entspricht genau der akzeptierten Antwort.
Mark Amery
16
$('controlCheckBox').click(function(){
    var temp = $(this).prop('checked');
    $('controlledCheckBoxes').prop('checked', temp);
});
Mahmoh
quelle
4
- 1, weil es sich um eine reine Code-Antwort handelt, die Frage nicht direkt beantwortet und nichts hinzugefügt hat, was andere Antworten noch nicht behandelt haben.
Mark Amery
15

Dies ist wahrscheinlich die kürzeste und einfachste Lösung:

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

oder

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

Noch kürzer wäre:

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

Hier ist auch eine jsFiddle .

Friedrich
quelle
14

Einfaches JavaScript ist sehr einfach und viel weniger Aufwand:

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

Beispiel hier

Alex W.
quelle
@MarkAmery Die akzeptierte Antwort behandelt nicht, wie es ohne jQuery geht. Meine Antwort fügt der akzeptierten Antwort einen zusätzlichen Nutzen hinzu.
Alex W
13

Ich konnte es nicht zum Laufen bringen mit:

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

Sowohl wahr als auch falsch würden das Kontrollkästchen aktivieren. Was für mich funktioniert hat war:

$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', '');     // For unchecking
Fredcrs
quelle
16
sollte es nicht sein trueund falseund nicht 'true'und 'false'?
tpower
9
Es hat "nicht funktioniert", weil 'false'es in einen booleschen Wert konvertiert wurde, was dazu führte, dass eine trueleere Zeichenfolge ausgewertet wurde, falsesodass es "funktioniert" hat. Sehen Sie sich diese Geige zum Beispiel an, was ich meine.
Schatten-Assistent ist Ohr für Sie
@ chris97ong Ich habe deine Bearbeitung zurückgesetzt. Wenn jemand sagt "Verwenden Sie den folgenden Code nicht, weil er nicht funktioniert", ist es schädlich , diesen Code zu korrigieren , während Sie den Kommentar hinterlassen, dass er nicht funktioniert - insbesondere, wenn die Erklärung in den Kommentaren, warum der Code nicht funktioniert, verletzt wird funktioniert nicht Trotzdem ist diese Antwort immer noch etwas verwirrt und verdient aus den von tpower und ShadowWizard angegebenen Gründen eine Ablehnung.
Mark Amery
1
Verwenden Sie wahre und falsche Werte für Boolesche Werte. Verwenden Sie nicht "wahr" oder "falsch" (Zeichenfolgen).
Jone Polvora
13

Wenn Sie ein Kontrollkästchen wie aktiviert haben;

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

es könnte nicht genug sein. Sie sollten auch die folgende Funktion aufrufen.

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

Insbesondere, wenn Sie das Kontrollkästchen Kontrollkästchen entfernt haben.

Serhat Koroglu
quelle
11

Hier ist die vollständige Antwort mit jQuery

Ich teste es und es funktioniert zu 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
    });

quelle
10

In jQuery

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

oder

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

In JavaScript

if (document.getElementById("checkboxID").checked){
    alert("Checked");
}
ijarlax
quelle
7
Dies beantwortet die Frage nicht.
Samuel Liew
2
Diese Antwort ist veraltet, da sie .attranstelle von verwendet wird .prop.
Blazemonger