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!

Gary
quelle

Antworten:

433

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

$("input:checkbox:not(:checked)")
SLaks
quelle
4
Und die Verwendung von Eingabe [Typ = Kontrollkästchen] ist am schnellsten.
jClark
29

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

Dave
quelle
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.

Thulasiram
quelle
7

Auch mit reinem js kann es so erreicht werden:

var matches = document.querySelectorAll('input[type="checkbox"]:not(:checked)');
Pavel Griza
quelle
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 (,).
cdub
quelle
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)")
Ehsan
quelle
1

Zur Auswahl classkönnen Sie Folgendes tun:

$("input.className:checkbox:not(:checked)")
Chukwuemeka Inya
quelle
0
$(".clscss-row").each(function () {
if ($(this).find(".po-checkbox").not(":checked")) {
               // enter your code here
            } });
UTHIRASAMIE
quelle
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