Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2011, 23:42
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Подсчёт и занесение в массив чекнутых инпутов
Всем драсте)

Есть n-ое количество чекбоксов (сами чекбоксы не находятся внутри тэга <form> )

К примеру есть 6 чекбоксов:
<input type="checkbox" name="name_smile" id="id_1">
<input type="checkbox" name="name_smile" id="id_2">
<input type="checkbox" name="name_smile" id="id_3">
<input type="checkbox" name="name_smile" id="id_4">
<input type="checkbox" name="name_smile" id="id_5">
<input type="checkbox" name="name_smile" id="id_6">

при нажатии на ссылку запускается функция подсчитывающая количество выбранных чекбоксов и заносящая их значения в массив.
Подскажите, как это сделать? С чекбоксами никогда не работал, по этому не знаю даж с чего начать..
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2011, 23:50
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Входным параметром указываешь атрибут name группы своих чекбоксов
function checkCbox(groupName) {
		if (!groupName) { return false; }
		
		var group = document.getElementsByName(groupName), result = [], i;
		
		for (i = group.length; i--;){
			if (group[i].checked === true) { result.push(group[i].value); }
		}
		
		return result;
	}
__________________
kobezzza
code monkey
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2011, 00:15
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

kobezzza,
спасибо. Когда читал про getElementsByName, почти додумал до подобного кода, только с другим циклом и условием. Но т.к. по привычке поставил getElementsByName то в начале ошибку начало выдавать((
Ответить с цитированием
  #4 (permalink)  
Старый 18.07.2011, 23:58
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

kobezzza,
Не вышло с этим кодом....
Вот все чекбоксы, в том виде как они сейчасть у меня выводятся.

1) 21 <input name="name_smile" id="id_21" value="id_21" type="checkbox">

2) 10 <input name="name_smile" id="id_10" value="id_10" type="checkbox"> 

3) 12 <input name="name_smile" id="id_12" value="id_12" type="checkbox"> 

4) 15 <input name="name_smile" id="id_15" value="id_15" type="checkbox">

5) 19 <input name="name_smile" id="id_19" value="id_19" type="checkbox">


(перед инпутом выводится его ид в бд, это просто для наглядности)

Отмечаю все чекбоксы, нажимаю, на ссылку, которая запускает функцию с этим содержанием:
var group = document.getElementsByName('name_smile'), result = [], i;
    for (i = group.length; i--;){
       if (group[i].checked) { result.push(group[i].value); alert(result[i]);}
        }


вылетают алерты с таким содержанием:
undefined
undefined
id_12
id_15
id_19


Вообще не понимаю в чём дело, в роде бы всё правильно, но 2 элемента не определены. Подскажите пожалуйста, почему?

Последний раз редактировалось (Sandr), 19.07.2011 в 00:01.
Ответить с цитированием
  #5 (permalink)  
Старый 19.07.2011, 09:55
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

result[i] = group[i].value;


У Вас элементы перебирались в цикле в обратном порядке, а .push() добавлял элементы в прямом порядке.
Ответить с цитированием
  #6 (permalink)  
Старый 19.07.2011, 12:15
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Matre,
Спасибо, теперь всё работает)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14