jquery - установить все флажки с именем массива js - PullRequest
22 голосов
/ 26 февраля 2010

Я хочу использовать 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;    
});

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

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

Ответы [ 4 ]

56 голосов
/ 26 февраля 2010

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

У меня работает этот селектор:

$('input[name=items\\[\\]]')
12 голосов
/ 26 февраля 2010

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

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

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

4 голосов
/ 26 февраля 2010

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

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

Другое дело, что в вашем коде вы можете установить только свои флажки на «флажок», но никогда не снимать флажок, этот код установит флажки на флажок «истина» или «ложь», в соответствии с тем, что он получает как атрибут от элемента, по которому щелкнули ,

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

установите флажок для проверки всех с идентификатором

 <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

2 голосов
/ 10 мая 2011
$("input[name='smsid[]']")

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...