Как добавить атрибут checked если value имеет значение?
Учусь программировать, но не так все гладко и легко дается. Мне нужно сделать так, чтобы когда value имеет значение, checkbox был активирован, нужно вставить ему атрибут checked. Написал код, который якобы работает, но если буду обращаться к конкретному элементу. Но у меня задача другая. Есть родитель, в нем располагается несколько input, input со значением checkbox находится первым, два остальных input со значением text ниже. Если один из этих полей имеет текс, нужно добавить тогда в checkbox атрибут checked="true".
Не могу пока понять логику обращения к конкретному элементу. Получается только к родителю присвоить. Подскажите, пожалуйста!
$('.info-dop_time').each(function() {
$(this).closest('#checkbox-dop_time').attr('checked', 'true', !this.value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="time__iner checkbox-dop_time">
<label for="button1">
<span class="add_h5">Время подготовки:</span>
</label>
<input type="checkbox" class="btn_show_doptime" id="checkbox-dop_time">
</div>
<div class="time__iner iner__time info-dop_time">
<span class="add_h5">Время подготовки:</span>
<input type="text" value="">
<input type="text" value="текст">
</div>
Ответы (2 шт):
$('.info-dop_time').each(function() {
var value = $(this).find('input').val();
$(this).prev('.checkbox-dop_time').
find('.btn_show_doptime').prop('checked', value != '');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="time__iner checkbox-dop_time">
<label for="button1">
<span class="add_h5">Время подготовки:</span>
</label>
<input type="checkbox" class="btn_show_doptime">
</div>
<div class="time__iner iner__time info-dop_time">
<span class="add_h5">Время подготовки:</span>
<input type="text" value="текст">
</div>
<div class="time__iner checkbox-dop_time">
<label for="button1">
<span class="add_h5">Время подготовки:</span>
</label>
<input type="checkbox" class="btn_show_doptime" checked>
</div>
<div class="time__iner iner__time info-dop_time">
<span class="add_h5">Время подготовки:</span>
<input type="text" value="">
</div>
Вариант на js c возможностью ввода и удаления данных из полей.
Если данные введены - проставляется checked
Если удалены в обоих полях - убирается.
var elem = document.getElementsByClassName('info-dop_time');
var param = document.getElementsByClassName('btn_show_doptime');
for (let i=0;i<elem.length;i++){
var elem1 = elem[i].getElementsByTagName('input');
for (let z=0;z<elem1.length;z++){
if (elem1[z].value || elem1[z].innerText){
param[i].checked = true;
} else {
param[i].checked = false;
}
elem1[z].oninput = function () {
var elem1 = elem[i].getElementsByTagName('input');
param[i].checked = false;
for (let z1=0;z1<elem1.length;z1++) {
if (elem1[z1].value || elem1[z1].innerText) {
param[i].checked = true;
}
}
}
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="time__iner checkbox-dop_time">
<label for="button1">
<span class="add_h5">Время подготовки:</span>
</label>
<input type="checkbox" class="btn_show_doptime" id="checkbox-dop_time">
</div>
<div class="time__iner iner__time info-dop_time">
<span class="add_h5">Время подготовки:</span>
<input type="text" value="">
<input type="text" value="">
</div>
<div class="time__iner checkbox-dop_time">
<label for="button1">
<span class="add_h5">Время подготовки:</span>
</label>
<input type="checkbox" class="btn_show_doptime" id="checkbox-dop_time">
</div>
<div class="time__iner iner__time info-dop_time">
<span class="add_h5">Время подготовки:</span>
<input type="text" value="">
<input type="text" value="">
</div>
<div class="time__iner checkbox-dop_time">
<label for="button1">
<span class="add_h5">Время подготовки:</span>
</label>
<input type="checkbox" class="btn_show_doptime" id="checkbox-dop_time">
</div>
<div class="time__iner iner__time info-dop_time">
<span class="add_h5">Время подготовки:</span>
<input type="text" value="">
<input type="text" value="">
</div>