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[]" и поставить перед [и] анти-косую черту, чтобы они не считались специальными символами, но это не сработало...
Если кто-то знает решение и готов поделиться им, было бы здорово!!:)
4 answers
Экранируйте внутренние скобки с помощью \\
(без пробела) - это должно решить проблему.
Этот селектор работает для меня:
$('input[name=items\\[\\]]')
Попробуйте использовать
$('input[name="items[]"]')
Нет необходимости в @
и используйте "
. Обратите внимание, что внешними кавычками селектора являются '
. В противном случае вы можете вызвать ошибку синтаксического анализа.
Прежде всего, ваш атрибут 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
$("input[name='smsid[]']")
Этот код отлично работает для меня...