jQuery - выделить checkbox

12
Апокалипсис
На сайте с 02.11.2008
Offline
391
6911

Доброе время суток!

Цель, выделить сразу много checkbox такого вида


<input type='checkbox' name='del[1]' class='checkbox'>
<input type='checkbox' name='del[2]' class='checkbox'>
<input type='checkbox' name='del[3]' class='checkbox'>

Делаю так:



<input type="checkbox" id="selall" value="1" class="checkbox">
<span id="text">отметить</span> все


$(function () {
$("#selall").click(function () {
if (!$("#selall").is(":checked")){
$(".checkbox").removeAttr("checked");
// $('#text').text("Снять отметку");
}
else{
$(".checkbox").attr("checked","checked");
// $('#text').text("Отметить");
}

});
});

Все работает, но 1 раз. Т.е 1 раз выделяются и убираются, а потом нереагирует.

Подскажите в какую сторону пойти. Спасибо

Записки нищего (http://zapiskinishego.ru) - мой личный блог Услуги php программиста. Очень нужна любая работа. Не покупают? Поведенческий аудит интернет-магазина за 5000 руб. (/ru/forum/990312)
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1


<script type="text/javascript">
function js_check_all(A)
{
for(var B=0;B<A.elements.length;B++)
{
var F=A.elements;
F.checked=A.elements[0].checked;
}
}
</script>
<form action="" method="POST">
<table border="1" cellpadding="0" cellspasing="2">
<tr>
<td>Товары</td>
<td><input type="checkbox" name="all" onclick="js_check_all(this.form);"></td>
</tr>
<tr>
<td>Товар 1</td>
<td><input type="checkbox" name="del[]" class="checkbox"></td>
</tr>
<tr>
<td>Товар 2</td>
<td><input type="checkbox" name="del[]" class="checkbox"></td>
</tr>
<tr>
<td>Товар 3</td>
<td><input type="checkbox" name="del[]" class="checkbox"></td>
</tr>
</table>
</form>
Подпись))
Апокалипсис
На сайте с 02.11.2008
Offline
391
#2

Милованов Ю.С, Дело в том, что у меня del[1] цифра.

Цифра является id товара.

Поэтому ваш скрипт не сработает, нужно цеплять к class или к id который может быить одинаков у всех элементов

Да и checkboxов по 3 шт на товар с разными:

view[1]

send[1]

и т.п.

R
На сайте с 18.12.2009
Offline
92
#3

Апокалипсис

$("#selall").on("click", function....

Апокалипсис
На сайте с 02.11.2008
Offline
391
#4

rerighter, А можно полный фрагмент?

Я еще не весь синтаксис понял

R
На сайте с 18.12.2009
Offline
92
#5



<input type="checkbox" id="selall" value="1" class="checkbox">
<span id="text">отметить</span> все


$(function () {
$("#selall").on("click", function () {
if (!$("#selall").is(":checked")){
$(".checkbox").removeAttr("checked");
// $('#text').text("Снять отметку");
}
else{
$(".checkbox").attr("checked","checked");
// $('#text').text("Отметить");
}

});
});
Апокалипсис
На сайте с 02.11.2008
Offline
391
#6

rerighter, Увы, жмется только 1 раз, выделяется снимается и всё.

R
На сайте с 18.12.2009
Offline
92
#7

Я отработал этот вариант в браузере. Самое интересное, если наблюдать за исполнением кода (F12), при каждом клике добавляется checked="checked" и убирается. Значит функция срабатывает, но выводится внешне только 1 раз. Странно это!

Апокалипсис
На сайте с 02.11.2008
Offline
391
#8
rerighter:
Я отработал этот вариант в браузере. Самое интересное, если наблюдать за исполнением кода (F12), при каждом клике добавляется checked="checked" и убирается. Значит функция срабатывает, но выводится внешне только 1 раз. Странно это!

Вот и я про тоже. И не знаю как решить.

А на чистом js что то не могу привязать к class=checkbox ...

R
На сайте с 18.12.2009
Offline
92
#9


$(function() {
$("#selall").on("change", function() {
if($(this).is(":checked")) {
$(".checkbox").each(function() {
$(this).prop('checked', true);
});
//$('#text').text("Отметить");
}
else {
$(".checkbox").each(function() {
$(this).prop('checked', false);
});
//$('#text').text("Снять отметку");
}
});
});

Заменил .removeAttr("checked") на .prop('checked', false) и т.д.

Спасибо Вам за топик, узнал что-то новое и для себя.

Апокалипсис
На сайте с 02.11.2008
Offline
391
#10

rerighter, Спасибо! Я 2 дня мучался! :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий