Alle deaktivierten Kontrollkästchen in jquery finden


197

Ich habe eine Liste von Kontrollkästchen:

<input type="checkbox" name="answer" id="id_1' value="1" />
<input type="checkbox" name="answer" id="id_2' value="2" />
...
<input type="checkbox" name="answer" id="id_n' value="n" />

Ich kann alle Werte der aktivierten Kontrollkästchen erfassen. Meine Frage ist, wie alle Werte von nicht aktivierten Kontrollkästchen abgerufen werden können. Ich habe es versucht:

$("input:unchecked").val();

um den Wert eines nicht aktivierten Kontrollkästchens zu erhalten, aber ich habe:

Syntaxfehler, nicht erkannter Ausdruck: nicht markiert.

Kann jemand ein Licht auf dieses Thema werfen? Danke!



Antworten:


433

Wie in der Fehlermeldung angegeben, enthält jQuery keinen :uncheckedSelektor.
Stattdessen müssen Sie den :checkedSelektor umkehren:

$("input:checkbox:not(:checked)")

4
Und die Verwendung von Eingabe [Typ = Kontrollkästchen] ist am schnellsten.
jClark

29

$("input:checkbox:not(:checked)") Sie erhalten die deaktivierten Kontrollkästchen.


10

Sie können dies tun, indem Sie die jQuerys-Funktionalität erweitern. Dadurch wird die Textmenge verkürzt, die Sie für den Selektor schreiben müssen.

$.extend($.expr[':'], {
        unchecked: function (obj) {
            return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked'));
        }
    }
);

Sie können dann $("input:unchecked")alle Kontrollkästchen und Optionsfelder abrufen, die aktiviert sind.


7

Auch mit reinem js kann es so erreicht werden:

var matches = document.querySelectorAll('input[type="checkbox"]:not(:checked)');

3
$("input[type='checkbox']:not(:checked):not('\#chkAll\')").map(function () { 
   var a = ""; 
   if (this.name != "chkAll") { 
      a = this.name + "|off"; 
   } 
   return a; 
}).get().join();

Dadurch werden alle nicht aktivierten Kontrollkästchen abgerufen und das Kontrollkästchen "chkAll" ausgeschlossen, mit dem ich alle Kontrollkästchen deaktiviere. Da ich wissen möchte, welchen Wert ich an die Datenbank übergebe, habe ich diese deaktiviert, da die Kontrollkästchen den Wert on angeben.

//looking for unchecked checkboxes, but don’t include the checkbox all that checks or unchecks all checkboxes
//.map - Pass each element in the current matched set through a function, producing a new jQuery object containing the return values.

//.get - Retrieve the DOM elements matched by the jQuery object.
//.join - (javascript) joins the elements of an array into a string, and returns the string.The elements will be separated by a specified separator. The default separator is comma (,).

2
Sie sollten nicht etwas in Ihre Antwort aufnehmen, das für das OP völlig irrelevant ist. Er benutzt keine chkAllSchachtel, also wozu soll man sie erwähnen?
MMM

3

Sie können wie folgt verwenden:

$(":checkbox:not(:checked)")


0
$(".clscss-row").each(function () {
if ($(this).find(".po-checkbox").not(":checked")) {
               // enter your code here
            } });

1
Willkommen bei StackOverflow! Bitte fügen Sie Ihrem Code eine Erklärung hinzu, damit andere Benutzer (für die dies möglicherweise das ist, wonach sie suchen) wissen, was Ihr Code tut.
Nander Speerstra
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.