знайти всі прапорець у 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.