Задать вопрос
@m4f1

Как правильно вызвать функцию при нажатии на radio?

Как правильно ссылаться на элементы страницы средствами javascript?
Нужно сделать так, чтобы при нажатии на один элемент radio выполнялась определенная функция, на второй аналогично:
1) Курьер (СДЭК|Посылка)
2) Пункты самовывоза (СДЭК|Посылка)

Код ниже нет возможности отредактировать, создается каждый раз когда человек вызывает форму!
<div id="second-part">
<div id="sample_form_deliv" class="cart_delivery b-field clearfix">	
<fieldset required="" class="b-checkbox-group">		
<legend class="p_header bold">Способ доставки:</legend>		
<label class="input-label left">			
<input class="b-check-box" type="radio" data-rate="380" value="759" name="sample_form_deliv"><span></span>
			Курьер (СДЭК|Посылка) (380 ₽)		
</label>		
<label class="input-label left">			
<input class="b-check-box" type="radio" value="75" name="sample_form_deliv"><span></span>
			Пункты самовывоза (СДЭК|Посылка)		
</label>	
</fieldset>
</div></div>
  • Вопрос задан
  • 503 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Mysterion
function fnc() {
	alert('function called');
}
window.onload=function(){
	var b = document.getElementsByName("sample_form_deliv");
	var p = null;
	for (var i = 0; i < b.length; i++) {
		b[i].addEventListener('change', function() {
			if (this !== p) {
				prev = this;
				fnc();
			}
		});
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можешь так, можешь брать querySelectorAll - все радио с определенным классом или в определенном блоке и сравнивать там не знаю по name или еще чему- radio === checked ? 1 : 2; Только не забывай - радио 1 из группы может быть активен)
const radio1 = document.querySelector('.radio-1');
const radio2 = document.querySelector('.radio-2');
const myFunction1 = () => {
 console.log('radio1');
}
const myFunction2 = () => {
 console.log('radio2');
}
radio1.addEventListener('change', myFunction1);
radio2.addEventListener('change', myFunction2);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы