jquery'deki tüm işaretlenmemiş onay kutularını bul


197

Onay kutularının bir listesi var:

<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" />

İşaretli onay kutularının tüm değerlerini toplayabilirim; sorum şu: İşaretlenmemiş onay kutularının tüm değerlerini nasıl alabilirim? Denedim:

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

denetlenmeyen bir onay kutusunun değerini almak için, ancak var:

Sözdizimi hatası, tanınmayan ifade: işaretlenmedi.

bu konuya ışık tutabilecek olan var mı? teşekkür ederim!



Yanıtlar:


436

Hata iletisinin belirttiği gibi, jQuery bir :uncheckedseçici içermez .
Bunun yerine :checkedseçiciyi ters çevirmeniz gerekir :

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

4
Ve [type = checkbox] girişini kullanmak en hızlı yöntemdir.
jClark

29

$("input:checkbox:not(:checked)") İşaretlenmemiş kutuları alacaksınız.


10

Bunu jQuerys işlevselliğini genişleterek yapabilirsiniz. Bu, seçici için yazmak zorunda olduğunuz metin miktarını kısaltacaktır.

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

Ardından, $("input:unchecked")işaretlenen tüm onay kutularını ve radyo düğmelerini almak için kullanabilirsiniz .


7

Ayrıca saf js ile böyle bir şekilde elde edilebilir:

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

Bu, tüm işaretlenmemiş onay kutularını alır ve tüm onay kutularının işaretini | kaldırmak için kullandığım "chkAll" onay kutusunu hariç tutar. Veritabanına hangi değeri ilettiğimi bilmek istediğim için, onay kutuları bana bir değer verdiğinden bunları kapalı olarak ayarladım.

//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
Cevabınıza OP için tamamen alakasız bir şey eklememelisiniz. Bir chkAllkutu kullanmaz , bundan bahsetmenin anlamı nedir?
MMM

3

Bunun gibi kullanabilirsiniz:

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

1

Seçim classyapmak için şunları yapabilirsiniz:

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

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

1
StackOverflow'a hoş geldiniz! Lütfen kodunuza bir açıklama ekleyin, böylece diğer kullanıcılar (aradıkları şey bu olabilir) kodunuzun ne yaptığını bilir.
Nander Speerstra
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.