Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   checkbox + js (https://javascript.ru/forum/misc/8339-checkbox-js.html)

Georgiy 20.03.2010 03:44

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 Погуглив нашёл много примеров но только которые для этого не подходят - там предлагается например снять или поставить автоматически галки на чекбоксы, нажатием на кнопку или на один чекбокс - и ничего подобного моему примеру нет.

chu4___x 21.03.2010 16:53

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;
			}
		};
	};
};

Georgiy 29.03.2010 11:34

Спасибо, но я не могу разобраться как это всё совместить:) делал так:(в итоге конечно не работает)

<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'>

subzey 29.03.2010 18:44

http://javascript.ru/forum/misc/8095...hekboksov.html
вот тут уже было что-то подобное

chu4___x 30.03.2010 20:14

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;
				}
			};
		};
	};
})();

chu4___x 30.03.2010 20:17

Но лучше поискать другой вариант, этот я нашёл на просторах интернета и не уверен, что он будет работать совсем корректно.

Georgiy 31.03.2010 10:43

Спасибо!

На самом деле функция работает, только не совсем так как надо:)

Думаю моих знаний js врядли хватит чтобы переделать "по примеру", т.к. использую js очень редко.

SkyLight 31.03.2010 12:13

Уважаемый, у вас фактически два события: установка/снятие флага с value10 и та же операция с любым другим чеком. Соответственно, надо раздать обработчики чекам на onchange, двух типов. Первый обработчик вешается на value10 и проверяет, если с него снята галка, то пробежаться циклом по всем остальным чекам и снять галки с них. Второй вешается на все остальные чеки и проверяет, если на данном чеке галка, то поставить ее и на value10. Всё. Реализация - надо знать, как искать нужные элементы и как устанавливать значения атрибутов. Эти задачи решаются в вышеприведенных кусках кода, надо только его разобрать, пользуясь при необходимости мануалом, как на этом сайте, например. Учитесь.

Georgiy 31.03.2010 14:20

Цитата:

Сообщение от SkyLight (Сообщение 49659)
Учитесь.

Спасибо, то что надо. данный подход делает форум неважным:)


Часовой пояс GMT +3, время: 10:35.