checkbox + js
Добрый день уважаемые! Нужна помощь!
Очень понадобился js скрипт, который делает следующее: Как только ставим галочку на value1 или value2 или value3, она сразу ставится на value10 (выделяется автоматически), но если галочку убрать с value10, то она также должна пропасть со всех value1 value2 value3. <input type='checkbox' name='value1' value='1'> <input type='checkbox' name='value2' value='2'> <input type='checkbox' name='value3' value='3'> <input type='checkbox' name='value10' value='10'> PS Погуглив нашёл много примеров но только которые для этого не подходят - там предлагается например снять или поставить автоматически галки на чекбоксы, нажатием на кнопку или на один чекбокс - и ничего подобного моему примеру нет. |
var checkbox = document.getElementsByTagName('input'), checkboxes = []; for (var i = 0; i < checkbox.length; i++) { if (checkbox[i].name.indexOf('value') != -1) { checkboxes.push(checkbox[i].name); checkbox[i].onchange = function () { if (this.name == 'value10') { for (var _i = 0; _i < checkboxes.length; _i++) { document.getElementsByName(checkboxes[_i])[0].checked = 0; }; } else { document.getElementsByName('value10')[0].checked = this.checked ? 1 : 0; } }; }; }; |
Спасибо, но я не могу разобраться как это всё совместить:) делал так:(в итоге конечно не работает)
<script language="javascript"> var checkbox = document.getElementsByTagName('input'), checkboxes = []; for (var i = 0; i < checkbox.length; i++) { if (checkbox[i].name.indexOf('value') != -1) { checkboxes.push(checkbox[i].name); checkbox[i].onchange = function () { if (this.name == 'value10') { for (var _i = 0; _i < checkboxes.length; _i++) { document.getElementsByName(checkboxes[_i])[0].checked = 0; }; } else { document.getElementsByName('value10')[0].checked = this.checked ? 1 : 0; } }; }; }; </script> <input type='checkbox' name='value1' value='1'> <input type='checkbox' name='value2' value='2'> <input type='checkbox' name='value3' value='3'> <input type='checkbox' name='value10' value='10'> |
http://javascript.ru/forum/misc/8095...hekboksov.html
вот тут уже было что-то подобное |
Georgiy,
Чекбоксы должны располагаться до функции. <input type='checkbox' name='value1' value='1'> <input type='checkbox' name='value2' value='2'> <input type='checkbox' name='value3' value='3'> <input type='checkbox' name='value10' value='10'> (function () { var checkbox = document.getElementsByTagName('input'), checkboxes = []; for (var i = 0; i < checkbox.length; i++) { if (checkbox[i].name.indexOf('value') != -1) { checkboxes.push(checkbox[i].name); checkbox[i].onchange = function () { if (this.name == 'value10') { for (var _i = 0; _i < checkboxes.length; _i++) { document.getElementsByName(checkboxes[_i])[0].checked = 0; }; } else { document.getElementsByName('value10')[0].checked = this.checked ? 1 : 0; } }; }; }; })(); |
Но лучше поискать другой вариант, этот я нашёл на просторах интернета и не уверен, что он будет работать совсем корректно.
|
Спасибо!
На самом деле функция работает, только не совсем так как надо:) Думаю моих знаний js врядли хватит чтобы переделать "по примеру", т.к. использую js очень редко. |
Уважаемый, у вас фактически два события: установка/снятие флага с value10 и та же операция с любым другим чеком. Соответственно, надо раздать обработчики чекам на onchange, двух типов. Первый обработчик вешается на value10 и проверяет, если с него снята галка, то пробежаться циклом по всем остальным чекам и снять галки с них. Второй вешается на все остальные чеки и проверяет, если на данном чеке галка, то поставить ее и на value10. Всё. Реализация - надо знать, как искать нужные элементы и как устанавливать значения атрибутов. Эти задачи решаются в вышеприведенных кусках кода, надо только его разобрать, пользуясь при необходимости мануалом, как на этом сайте, например. Учитесь.
|
Цитата:
|
Часовой пояс GMT +3, время: 10:35. |