обработчика события, или само событие(не знаю если честно) в файле order_ajax.js?
Вот создается элемент:
itemNode = BX.create('DIV', {
props: {className: 'bx-soa-pp-company '},
children: [label, title, injectNode],
events: {click: BX.proxy(this.selectPaySystem, this), function(e) {e.stopPropagation(e);}
}
});
У него задается обработчик selectPaySystem для клика, а далее с помощью e.stopPropagation(e), я пытался отменить дальнейшее распространение на вложенные элементы(input[type=radio]).
Так как по итогу, selectPaySystem "отменяет" дефолтные события на этих input, и они не принимают состояние checked=true
Заранее благодарю
на вложенные элементы события не распространяются. Всплытие и погружение идёт от цели до document или наоборот. То есть при структуре <div><input></div>, клик по диву никак не повлияет на инпут. Если конечно там нет обработчиков на js, которые воздействуют на вложенные элементы. Но в таком случает перехват события не поможет. Тебе нужно посмотреть по коду метода selectPaySystem, где происходит установка состояния инпута и допилить под свою задачу.
Ну и клик по label надо учитывать. Label как раз может изменить состояние вложенного или привязанного инпута
Спасибо большое. А если написать свой обработчик для моих инпутов, это же как я понял отменяет любые воздействия других обработчиков?
Нет не отменяет. Событие заменяется только если добавлено через точку. input.onchange, например. А addEventListener позволяет сколько угодно вешать. Поэтому лучше найти существующий обработчик и поменять под себя.
Да, нашёл существующий обработчик. В нем по условию устанавливалась preventDefault(). Дописал своё условие, все заработало. Спасибо большое за содействие 🤝
Обсуждают сегодня