У меня есть следующая надпись и скрипты. У меня есть пролет с корневым именем в качестве id, и он является флажком ввода.
мое требование - когда я нажимаю на диапазон, флажок ввода onchanange обработчик должен вызывать с объектом события ввода.
просьба найти приведенный ниже фрагмент кода, а также указать код codepen с примером.
HTML
<div>
<span id="rootnode" role="checkbox" aria-checked="false">
<span>i am bike</span>
</span>
<input tabindex="-1" type="checkbox" onchange="handleChange()" name="vehicle1" value="Bike">
</div>
JAVASCRIPT
document.getElementById("rootnode").addEventListener('click',this.handleclick);
function handleChange(e) {
alert(1)
}
function handleclick(e) {
alert('event fired..');
// how to call onchange handler handleclick with input event object.
}
Пример URL: https://codepen.io/anon/pen/ejKqzy?editors=1010
Ваша помощь высоко ценится.
Благодарю вас!!!
Вы можете просто создать событие в обработчике, а затем отправить его, например:
document.getElementById("rootnode").addEventListener("click", this.handleclick);
function handleChange(e) {
alert(1);
}
function handleclick(e) {
alert("event fired..");
if ("createEvent" in document) {
let evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
document.querySelector("input[name=vehicle1]").dispatchEvent(evt);
} else element.fireEvent("onchange");
}
<div>
<span id="rootnode" role="checkbox" aria-checked="false">
<span>i am bike</span>
</span>
<input tabindex="-1" type="checkbox" onchange="handleChange()" name="vehicle1" value="Bike">
</div>
Вы должны создать и отправить событие вручную:
var event = document.createEvent('Event');
event.initEvent("change", false, true);
var input = document.getElementsByName("vehicle1")[0];
input.dispatchEvent(event);
Документация для создания события здесь и для инициализации события здесь.
Для получения дополнительной информации вы можете посетить аналогичный пост (возможный дубликат): как я могу инициировать событие onchange вручную?