#javascript #jquery #checkbox
#javascript #jquery #флажок
Вопрос:
У меня есть два флажка.
<label><input type="checkbox" name="cb1" class="chbR" /> % Retain</label>
<label><input type="checkbox" name="cb2" class="chbP" /> % Passing</label>
Одновременно может быть выбрано только одно из обоих
Если выбран cb1 и пользователь нажимает cb1, cb1 должен быть отменен, если выбран cb2 и пользователь нажимает cb2, cb2 должен быть отменен
Если выбран cb1 и пользователь нажимает cb2, cb1 должен быть отменен, если выбран cb2 и пользователь нажимает cb1, cb2 должен быть отмененhttp://jsfiddle.net/5o47bgzc /
пробовал с событием щелчка и изменения, но похоже, что требуется третье состояние
когда происходит событие, предыдущее состояние недоступно
есть другой способ сделать это?
Комментарии:
1. Звучит так, как будто вам нужен переключатель…
2. нет, нужно иметь возможность снять оба флажка
3. Это просто означает, что вы хотите радио с некоторой магией , : D
Ответ №1:
Вы могли бы сделать это, сделав так, чтобы изменение каждого флажка отключало проверенное состояние другого:
$(".chbR").change(function() {
$(".chbP").prop('checked', false);
});
$(".chbP").change(function() {
$(".chbR").prop('checked', false);
});
label {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label><input type="checkbox" name="cb1" class="chbR" /> % Retain</label>
<label><input type="checkbox" name="cb2" class="chbP" /> % Passing</label>
Ответ №2:
Таким образом, эта логика использует переключатели и отслеживает выбранное значение. Если вы нажмете на радио, которое уже выбрано, оно отменит его выбор.
$(function(){
var lastValue = '';
$('.chb')
.on('click', function(e){
if (lastValue === e.target.value) {
e.target.checked = false;
lastValue = '';
}
})
.on('change', function(e){
lastValue = e.target.value;
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label><input type="radio" name="cb" value="retain" class="chb chbR" /> % Retain</label>
<label><input type="radio" name="cb" value="passing" class="chb chbP" /> % Passing</label>