Во-первых, обратите внимание, что в вашем примере HTML отсутствует атрибут id="div-pauze"
в div, но я предполагаю, что это опечатка в вопросе, иначе она не будет работать вообще.
Чтобы устранить проблему, которую вы описываете, вам нужно установить свойство checked
каждой радиокнопки в пределах #div-pauze
на false
. Вы можете сделать это, выбрав их все с помощью querySelectorAll()
и затем просматривая их.
Стоит также отметить, что здесь можно внести несколько улучшений в код. Во-первых, если вы оберните элементы input
в label
, вы можете удалить атрибут for
, чтобы сделать HTML короче и проще.
Во-вторых, не использует встроенные атрибуты события . Присоединяйте свои обработчики событий незаметно, используя addEventListener()
. Аналогично, всегда используйте событие change
вместо click
на флажках, рад ios и выберите элементы.
После всего сказанного попробуйте это:
var pauze = document.querySelector('#div-pauze');
document.querySelectorAll('.close').forEach(el => el.addEventListener('change', function() {
pauze.style.display = 'none';
pauze.querySelectorAll('input').forEach(el => el.checked = false);
}))
document.querySelectorAll('.open').forEach(el => el.addEventListener('change', function() {
pauze.style.display = 'block';
}));
#div-pauze {
display: none;
}
<ul class="list-unstyled radio-horizontal">
<li>
<label>
<input class="close" name="dbfield55" type="radio" value="Dagelijks" />
Dagelijks
</label>
</li>
<li>
<label>
<input class="close"name="dbfield55" type="radio" value="Wekelijks" />
Wekelijks
</label>
</li>
<li>
<label>
<input class="close" name="dbfield55" type="radio" value="Maandelijks" />
Maandelijks
</label>
</li>
<li>
<label>
<input class="open" name="dbfield55" type="radio" value="Geen" />
Geen
</label>
</li>
</ul>
<div id="div-pauze" class="col-sm-12 div-pauze">
<h4>Tijdelijk pauzeren</h4>
<p>Weet u zeker dat u onze nieuwsbrief niet meer wilt ontvangen? U kan de nieuwsbrief ook tijdelijk pauzeren.</p>
<ul class="list-unstyled">
<li>
<label>
<input id="3-maanden" name="dbfield" type="radio" value="Dagelijks">
Ik wil de nieuwsbrief pauzeren voor 3 maanden
</label>
</li>
<li>
<label>
<input id="6-maanden" name="dbfield" type="radio" value="Wekelijks">
Ik wil de nieuwsbrief pauzeren voor 6 maanden
</label>
</li>
<li>
<label>
<input id="uitschrijven" name="dbfield" type="radio" value="Geen">
Ik wil me nu definitief uitschrijven
</label>
</li>
</ul>
</div>
Когда вы пометили вопрос с помощью jQuery, вот реализация jQuery выше:
jQuery(function($) {
var $pauze = $('#div-pauze');
$('.close').on('change', function() {
$pauze.hide().find('input').prop('checked', false);
});
$('.open').on('change', function() {
$pauze.show();
});
});
#div-pauze {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="list-unstyled radio-horizontal">
<li>
<label>
<input class="close" name="dbfield55" type="radio" value="Dagelijks" />
Dagelijks
</label>
</li>
<li>
<label>
<input class="close"name="dbfield55" type="radio" value="Wekelijks" />
Wekelijks
</label>
</li>
<li>
<label>
<input class="close" name="dbfield55" type="radio" value="Maandelijks" />
Maandelijks
</label>
</li>
<li>
<label>
<input class="open" name="dbfield55" type="radio" value="Geen" />
Geen
</label>
</li>
</ul>
<div id="div-pauze" class="col-sm-12 div-pauze">
<h4>Tijdelijk pauzeren</h4>
<p>Weet u zeker dat u onze nieuwsbrief niet meer wilt ontvangen? U kan de nieuwsbrief ook tijdelijk pauzeren.</p>
<ul class="list-unstyled">
<li>
<label>
<input id="3-maanden" name="dbfield" type="radio" value="Dagelijks">
Ik wil de nieuwsbrief pauzeren voor 3 maanden
</label>
</li>
<li>
<label>
<input id="6-maanden" name="dbfield" type="radio" value="Wekelijks">
Ik wil de nieuwsbrief pauzeren voor 6 maanden
</label>
</li>
<li>
<label>
<input id="uitschrijven" name="dbfield" type="radio" value="Geen">
Ik wil me nu definitief uitschrijven
</label>
</li>
</ul>
</div>