jquery - установите все флажки с именем массива js


Я хочу использовать функцию jQuery "проверить все" в такой форме: http://jetlogs.org/jquery/jquery_select_all.html

Моя проблема в том, что я создаю свою форму из php-скрипта, и я не знаю точно, сколько флажков у меня будет заранее. Я использую соглашение об именовании "массив", чтобы иметь возможность получать все выбранные значения флажков в моих данных $_POST... итак, мои флажки выглядят так:

<input type="checkbox" name="items[]" value="<?php echo $id ?>">

Но это объявление jQuery не работа:

$("input[@name=items[]]").each(function()    
{    
    this.checked = checked_status;    
});

Вероятно, потому, что "[]" в конце моих "элементов" портит объявление jQuery... Я попытался написать @name=items[] так: "@name=items[]" и поставить перед [и] анти-косую черту, чтобы они не считались специальными символами, но это не сработало...

Если кто-то знает решение и готов поделиться им, было бы здорово!!:)

Author: Pierre, 2010-02-26

4 answers

Экранируйте внутренние скобки с помощью \\ (без пробела) - это должно решить проблему.

Этот селектор работает для меня:

$('input[name=items\\[\\]]')
 54
Author: rochal, 2015-06-25 07:47:35

Попробуйте использовать

$('input[name="items[]"]')

Нет необходимости в @ и используйте ". Обратите внимание, что внешними кавычками селектора являются '. В противном случае вы можете вызвать ошибку синтаксического анализа.

 9
Author: Emil Ivanov, 2010-02-26 10:33:36

Прежде всего, ваш атрибут name следует использовать для установки +1 элементов с одинаковым именем. Это практически то же самое, что и атрибут id, и он должен быть уникальным для каждого элемента, за исключением ссылок, но для вас это не так.

Попробуйте использовать атрибут class, он создан для того, что вы хотите делать!

Другое дело, что в вашем коде вы можете установить флажки только на "проверено", но никогда не снимать флажок, этот код установит для ваших флажков значение "проверено" или "ложно"., в соответствии с тем, что он получает в качестве атрибута от нажатого элемента.

Вы можете сделать что-то вроде этого:

Установите флажок "Проверить все" с идентификатором

 <input type="checkbox" id="checkAll">

Затем установите на всех флажках, которые должны быть отмечены/сняты, класс

<input type="checkbox" class="checked">

И вы можете сделать что-то подобное в jQuery

$("#checkAll").click( function(){
 var checkedValue = $(this).attr("checked");
 $("input.checked").attr("checked", checkedValue); });

Это изменит все флажки с проверенным классом на тот же проверенный атрибут, что и с идентификатором checkAll

 4
Author: Kennethvr, 2010-02-26 10:39:05
$("input[name='smsid[]']")

Этот код отлично работает для меня...

 2
Author: Kannan Prasad, 2011-05-10 20:49:09