Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как к вызову функции по onclick добавить еще одно условие? (https://javascript.ru/forum/events/62111-kak-k-vyzovu-funkcii-po-onclick-dobavit-eshhe-odno-uslovie.html)

Boortcore 30.03.2016 18:53

Если проверка на состояние радио-баттона принципиальна вне тела функции, то можно навешивать/удалять обработчик на кнопку в соответствии с активным радио-баттоном.
В теле функции в качестве проверки есть строка console.log('function is starting');
Когда первый радио-баттон неактивен, то обработчик события удаляется с кнопки и функция, разумеется, не срабатывает. В консоль ничего не выводится.
Постановка задачи интересная. Почему нельзя проверить активность радио-баттона в теле функции и уже дальше плясать от этого?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
	<input type="radio" name="rad" id="radio1" >
	<input type="radio" name="rad" id="radio2">
	<br>
	<input type="button" value="go" id="btn">

	<script>
		var radio1 = document.getElementById('radio1');
		var radio2 = document.getElementById('radio2')
		var btn = document.getElementById('btn');
		function myAlert(){
			console.log('function is starting');
			alert('hi!');

		}
		radio1.onchange = function(){
				btn.addEventListener('click', myAlert);
		}
		radio2.onchange = function(){
				btn.removeEventListener('click', myAlert);
		}
	</script>
</body>
</html>

dry fig 01.04.2016 21:14

Цитата:

Сообщение от Boortcore
Постановка задачи интересная

Boortcore, просто я до веб-программирования был АСУшником, отсюда и логика "условие 1" И "условие 2" = "вызов функции".
Спасибо Вам за не менее интересное решение! )


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