Как отметить чекбокс при отметке другого чекбокса
Есть три чекбокса
<label for="cbox1"><input id="cbox1" type="checkbox" name="char" value="1"> Один</label>
<label for="cbox2"><input id="cbox2" type="checkbox" name="char" value="2"> Два</label>
<label for="cbox3"><input id="cbox3" type="checkbox" name="char" value="3"> Три</label>
Также есть ещё три чекбокса
<input type="checkbox" id="title1" name="title">
<input type="checkbox" id="title2" name="title">
<input type="checkbox" id="title3" name="title">
Как при отметке, например, cbox1 подставлять в title1 value текст из label? А при отметке cbox2 - в title2 соответственно?
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Если не нарушать вашу HTML разметку, то поставить значение из label checkbox'а при клике в другой checkbox можно следующим образом:
// Обработчик клика
function checker() {
const targetInput = document.getElementById(`title${this.id.replace('cbox', '')}`);
targetInput.value = this.checked ? this.closest('label').textContent : '';
}
// Выбираем все input с атрибутом name равному char
document.querySelectorAll('input[name=char]').forEach(input => {
// Каждому назначаем событие клика и его обрабатывать будет функция checker
input.addEventListener('click', checker);
})
<label for="cbox1"><input id="cbox1" type="checkbox" name="char" value="1"> Один</label>
<label for="cbox2"><input id="cbox2" type="checkbox" name="char" value="2"> Два</label>
<label for="cbox3"><input id="cbox3" type="checkbox" name="char" value="3"> Три</label>
<hr/>
<input type="checkbox" id="title1" name="title">
<input type="checkbox" id="title2" name="title">
<input type="checkbox" id="title3" name="title">
При клике функция выбирает нужный checbox по ID, меняя 'cbox' на 'title' и в зависимости от значения чекбокса, если выбран, проставляет зависимому чекбоксу значение textContent ближайшего элемента label, если не выбран, ставит пусто.
Т.к. само value не визуализируется, смотреть изменение можно в инструментах разработчика(F12)