- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Профессионалы клиентской стороны, помогите, пожалуйста решить задачу.
Есть три группы чекбоксов:
Вопрос такой. Внутри функции fAd() нужно знать индекс чекбокса в группе, который был кликнут.
function fAd(obj) {alert(obj.name+'['+obj.???+']');
}
С помошью какого свойства можно получить этот индекс внутри функции? В данном примере (с тремя чекбоксами в каждой группе) он должен быть от 0 до 2.
Например obj.sourceIndex возвращает глобальный номер элемента в форме. А, вот, номер в пределах группы с одинаковым именем не знаю как из объекта получить. Может, это вообще невозможно?
PS: Сама форма динамическая, количество чекбоксов в группе и количество самих групп меняется в зависимости от данных в базе.
Да, на сколько я знаю в объекте параметров принадлежности к группе нет, поэтому можно таким вариантом решить.
function fAd(obj, index) {
alert(obj.name+'['+obj.???+']');
}
fAd(this, 1), где 1 - индекс группы.
<input type="checkbox" name="ncad1" value="N" onClick="fAd(this, 1)" >Не
<input type="checkbox" name="ncad1" value="N" onClick="fAd(this, 1)" >Не
-
<input type="checkbox" name="ncad2" value="N" onClick="fAd(this, 2)" >Не
<input type="checkbox" name="ncad2" value="N" onClick="fAd(this, 2)" >Не
<input type="checkbox" name="ncad2" value="N" onClick="fAd(this, 2)" >Не
-
<input type="checkbox" name="ncad3" value="N" onClick="fAd(this, 3)" >Не
<input type="checkbox" name="ncad3" value="N" onClick="fAd(this, 3)" >Не
<input type="checkbox" name="ncad3" value="N" onClick="fAd(this, 3)" >Не
Читай о методах форм, думаю, поможет. А вообще, думаю, задача стоит неправильно.
Что это?
<input type="checkbox" name="ncad3" value="N" onClick="fAd(this)" >Не
<input type="checkbox" name="ncad3" value="N" onClick="fAd(this)" >Не
<input type="checkbox" name="ncad3" value="N" onClick="fAd(this)" >Не
Одно и то же имя, одно и то же значение, один и тот же текст... Как говаривал Генри Форд, машина может быть любого цвета, лиж бы этот цвет был черным. И что бы человек не выбрал, он все равно выберит checkbox" name="ncad3" value="N" :) Это фатум. Ситуация необратима и неизбежна. ВЫБОРА НЕТ!
Ты не путаешь чекбоксы с радио буттонами?
Давай чекбоксам разные имена (как все делают) и твоя проблема отпадет.
Чекбокс - объект DOM
Группа чекбоксов - группа объектов DOM
Перебрать циклом группу объектов DOM, проверяя свойства value (или даже checked есть, кажется) - не проблема...
Да, на сколько я знаю в объекте параметров принадлежности к группе нет, поэтому можно таким вариантом решить.
fAd(this, 1), где 1 - индекс группы.
Да. В принципе я могу сделать и так:
function fAd(obj, index) {alert(obj.name+'['+index+']');
}
... но я думал, что уже в самом объекте есть свойство с номером индекса в группе чекбоксов/радиобатонов с одинаковым именем. Раз такого нет, придется индекс засовывать вторым аргументом в функцию...
Хотя я удивлен, что порядковый номер элемента в пределах всей формы разработчики предусмотрели (obj.sourceIndex), а в пределах группы элементов с одним именем - нет.
PS:
1. То что у всех чекбоксов одно и то же значение, это потому что я отразил только часть формы. Там каждое "Не" соответствует другому чекбоксу с названием улицы (для инверсии: <улица_такая-то>/не<улица_такая-то>). Так заказчик хочет.
2. Радиобатоны не подходят, т.к. нужна навороченная постоянно модернизируемая заказчиком логика: "если чекаешь этот, что эти снимаются автоматически, если снимаешь тот, вот эти два автоматически чекаются и т.д."
Разные имена в группе давать не вижу смысла, т.к. форма генерируется автоматически. Реально в группе чекбоксов намного больше, чем я отобразил. К ним удобнее обращаться через индексы в пределах одной группы.
3. Свойство checked не помогает, т.к. нужно проверять не состояние чекбокса, а был ли на нем клик. Результатом клика может быть, как checked так и unchecked.