Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отключение select'ов по чекбоксу (https://javascript.ru/forum/events/73438-otklyuchenie-select%27ov-po-chekboksu.html)

Sviside 16.04.2018 00:55

Отключение select'ов по чекбоксу
 
Вложений: 1
Добрый день,

Верстаю простенький калькулятор

https://codepen.io/tgbot454/pen/GxbaWZ?editors=1010

Прошу подсказать, как при неактивном элементе (1 на скрине) отключать поле выбора (2)

Скрин во вложении. Изначально думал множить значения из селекта на постоянное число чекбокса, но от идеи отказался.

Большое спасибо за внимание.

j0hnik 16.04.2018 01:08

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
<input type="checkbox" checked>
<select name="" id="">
	<option>1 опц</option>
	<option>2 опц</option>
	<option>3 опц</option>
</select>
	<script>
		document.querySelector('input').onchange = function(){
			document.querySelector('select').disabled = !this.checked;
		};

	</script>
</body>
</html>

Sviside 16.04.2018 01:44

Спасибо большое. Но прошу еще уточнить, как сделать сброс значение из селекта, если чекбокс неактивен. Имхо в нашем случае хоть раз выбрав select, value сохраняется

рони 16.04.2018 02:08

Sviside,
document.querySelector('input').onchange = function(){
            document.querySelector('select').disabled = !this.checked;
            document.querySelector('select').selectedIndex = 0;
        };

j0hnik 16.04.2018 02:09

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
<input type="checkbox" checked>
<select name="" id="">
	<option></option>
	<option>1 опц</option>
	<option>2 опц</option>
	<option>3 опц</option>
</select>
	<script>
		var sel = document.querySelector('select');
		document.querySelector('input').onchange = function(){
			sel.disabled = !this.checked;
			if (!this.checked) sel.selectedIndex = 0;
		};
</script>
</body>
</html>

Sviside 16.04.2018 02:12

Спасибо Господа! Вопрос решен


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