знайти всі прапорець у jquery


197

У мене є список прапорців:

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

Я можу зібрати всі значення встановлених прапорців; моє запитання - як можна отримати всі значення відмічених прапорців? Я намагався:

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

щоб отримати неперевірене прапорець, але я отримав:

Помилка синтаксису, нерозпізнаний вираз: невірно.

хтось може пролити світло на це питання? спасибі!



Відповіді:


434

Як зазначено в повідомленні про помилку, jQuery не включає :uncheckedселектор.
Замість цього потрібно перевернути :checkedселектор:

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

4
І використання вводу [type = checkbox] найшвидше.
jClark

29

$("input:checkbox:not(:checked)") Ви отримаєте неперевірені поля.


10

Ви можете зробити це, розширивши функціонал jQuerys. Це скоротить кількість тексту, який потрібно написати для селектора.

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

Потім можна використовувати $("input:unchecked")для отримання всіх прапорців і радіо кнопок, які встановлені.


7

Також це можна досягти за допомогою чистого js таким чином:

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

Це дозволить отримати всі відмічені прапорці та виключити прапорець "chkAll", який я використовую для встановлення | зніміть усі прапорці. Оскільки я хочу знати, яке значення я передаю в базу даних, я вимкнув їх, оскільки прапорці дають мені значення.

//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
Ви не повинні включати у свою відповідь щось, що абсолютно не має значення для ОП. Він не використовує chkAllкоробку, тому який сенс згадувати про неї.
МММ



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

1
Ласкаво просимо до StackOverflow! Будь ласка, додайте пояснення до свого коду, щоб інші користувачі (для яких це може бути те, що вони шукають) знали, що робить ваш код.
Nander Speerstra
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.