Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт "Отметить все чекбоксы/Снять отметку", Не работает моя функция. 
:(
    Опции темы
sunkitten
Дата 10.5.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



Добрый день.
Есть незамысловатая функция оптовой пометки всех чекбоксов формы и снятия отметки:
Код

<script type='text/javascript'>
function check()
{
    var a = document.getElementsByTagName('input');
    for (i=1; i<a.length; i++) a[i].checked = a[0].checked;
}
</script>
<form>
<input type='checkbox'  onclick='check()'>Отметить всё / снять отметку
<input type='checkbox'  value='1'>1 &nbsp;
<input type='checkbox'  value='2'>2 &nbsp;
<input type='checkbox'  value='3'>3 &nbsp;
</form>


Так вот когда этот код один на странице, то всё работает замечательно.
А как только помещаю на основную большую страницу, где динамически генерится фома и заранее не известно количество чекбоксов этот код не работает :(
Поможите кодом пжлста  smile 
PM MAIL   Вверх
Fortop
Дата 10.5.2008, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



sunkitten, 
во-первых, кто тебе сказал что у тебя все input это чекбоксы?

Почему ты решил что первый из input - будет именно тем что тебе надо?
Рекомендую для него считывать значение
Код

function check(self)
{
    var a = document.getElementsByTagName('input');
    var checkValue = self.checked;


Код

<input type='checkbox' id="chkAll" onclick='check(this)'>Отметить всё / снять отметку


Во-вторых, для всех остальных input недурно бы проверять их тип. Прежде чем устанавливать свойство checked.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
awers
Дата 11.5.2008, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



а можно добавить к нужным чекбоксам свойство class со значением к примеру (group_checkbox)
PM MAIL WWW ICQ Skype   Вверх
sunkitten
Дата 11.5.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



Господа, помогите пожалуйста годом готовой функции для моего случая  smile .
Код, с которым я мучался - нашел на этом форуме и пытался адаптировать для себя, но т.к. совершенно не знаком с логикой JS - естественно, что у меня не получилось. Я даже не знаю, куда "сунуть" подсказки, которые Вы дали мне выше.  smile 
Заранее благодарен
PM MAIL   Вверх
Fortop
Дата 11.5.2008, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 2
Всего: 42



sunkitten, 
Там же четко приведено куда. Присмотрись внимательнее к строчкам кода smile

Полученое checkValue подставишь вместо a[0].checked

Добавлено через 4 минуты и 32 секунды
Код

<script type='text/javascript'>
function check(self)
{
    var a = document.getElementsByTagName('input');
    var checkValue = self.checked;
    for (i=1; i<a.length; i++) {
        if (a[i].type='checkbox')
            a[i].checked = checkValue;
    }
}
</script>
<form>
<input type='checkbox' id="chkAll" onclick='check(this)'>Отметить всё / снять отметку
<input type='checkbox'  value='1'>1 &nbsp;
<input type='checkbox'  value='2'>2 &nbsp;
<input type='checkbox'  value='3'>3 &nbsp;
</form>



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
sunkitten
Дата 11.5.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



Почему то при клике по чекбоксу "Отметить всё / снять отметку" делаются помеченными не только чекбоксы этой формы, но и становится чекбоксом кнопка "Искать" из формы поиска  smile 
Странно...
Можно как то сделать, чтобы эта функция работала только для этой формы или для нужной группы чекбоксов, а не для всех, что есть на странице?
PM MAIL   Вверх
Ghirik
Дата 11.5.2008, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 5
Всего: 20



Вы код выкладывайте, жалко Вам, что ли?  smile 
А то мы знать не знаем чего Вы там пишите... И как отвечать?

Если делается такая
Код

        if (a[i].type='checkbox')

проверка, то не должно быть описаных вами чудес.


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
sunkitten
Дата 11.5.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



Я нашёл, в чём был замес:
Код

if (a[i].type=='checkbox')

Т.е. нужно "==" а не "="
Спасибо за помощь.
Но все равно, было бы удобнее, если бы помечались не все чекбоксы на странице, а только те, которые из "нужной" формы...
PM MAIL   Вверх
egrik
Дата 12.5.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 10.11.2006
Где: Voronezh

Репутация: нет
Всего: 1



Вот попробуй:

Код

<script LANGUAGE="JavaScript" TYPE="text/javascript">
<!--

function checkAll(obj)
{
    var checkValue = obj.checked;
    var check_box = obj.parentNode.getElementsByTagName('input');
    for (var i = check_box.length - 1; i >=0; i--)
    {
        if (check_box[i].type=='checkbox');
            check_box[i].checked = checkValue;
    }
    
}
//-->
</SCRIPT>


Код


<form>
<input type='checkbox' id="chkAll" onclick="checkAll(this)">Отметить всё / снять отметку
<input type='checkbox'  value='1'>1 &nbsp;
<input type='checkbox'  value='2'>2 &nbsp;
<input type='checkbox'  value='3'>3 &nbsp;
</form>


Добавлено через 4 минуты и 9 секунд
Хотя не совсем понятно, что ты имел в виду под определением "нужной формы". В приведенном примере "нужной" является там форма, в которой находится элемент

Код

<input type='checkbox' id="chkAll" onclick="checkAll(this)">Отметить всё / снять отметку

PM MAIL ICQ Skype   Вверх
SelenIT
Дата 12.5.2008, 01:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 7
Всего: 401



Только я бы заменил obj.parentNode на obj.form (хоть это и DOM0), ибо шут его знает, какая у этой формы верстка (может, там чекбоксики таблицей выравнены...).

А во многих практических случаях (особенно для серверной обработки на PHP) для коллекции однотипных чекбоксов вполне можно задавать одно имя (типа "items[]") и выхватывать их все с помощью метода getElementsByName.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
egrik
Дата 12.5.2008, 02:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 10.11.2006
Где: Voronezh

Репутация: нет
Всего: 1



Цитата(SelenIT @  12.5.2008,  01:15 Найти цитируемый пост)
Только я бы заменил obj.parentNode на obj.form 

да, пожалуй, дельное замечание.  Использование getElementsByName и задание имени для однотипных чекбоксов - также более универсальный вариант, кто его знает какие еще чекбоксы могут быть в форме, но что просили, за то и продаем )))
PM MAIL ICQ Skype   Вверх
sunkitten
Дата 14.5.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



Спасибо за советы, стал использовать код, приведенный г-ном Fortop...
PM MAIL   Вверх
murich
Дата 24.11.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.11.2009

Репутация: нет
Всего: нет



Подскажите, пожалуйста, еще одному незнайке яваскрипта.
Ситуация такая:
в форме куча чекбоксов с одинаковым именем name[]
Чекбоксы находятся в разных таблицах с определенными идентификаторами.
Нужна функция, которая по клику на ссылку отметит все чекбоксы, которые находятся в таблице с определенным идентификатором.

PM MAIL   Вверх
bars80080
Дата 24.11.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



murich, поимейте совесть, создайте собственную тему
PM MAIL WWW   Вверх
Painerman
Дата 25.9.2013, 12:49 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.9.2013

Репутация: нет
Всего: нет



Цитата(egrik @  12.5.2008,  00:11 Найти цитируемый пост)
Код
if (check_box[i].type=='checkbox');
; - походу лишняя

Пробовал менять 
Код

getElementsByTagName('input');
 на 
Код

getElementsByName('e[]');
 что-то отказывается работать, можно подробнее для столбца с checkbox-ами по имени e[].
Заранее благодарен.

Это сообщение отредактировал(а) Painerman - 25.9.2013, 12:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1003 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.