如果选中其中一个复选框,我会尝试禁用其他具有相同名称的复选框。这是我的代码:
<div id="selectSessionEvening" class="sessionEvening">
<p style="font-weight:bold;">Evening Session</p>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="4:00 PM - 5:00 PM" id="four-five" onFocus="startCalc();" onBlur="stopCalc();" name="sessionTime">
<label class="form-check-label" for="four-five">4:00 PM - 5:00 PM</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="5:00 PM - 6:00 PM" id="five-six" onFocus="startCalc();" onBlur="stopCalc();" name="sessionTime">
<label class="form-check-label" for="five-six">5:00 PM - 6:00 PM</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="6:00 PM - 7:00 PM" id="six-seven" onFocus="startCalc();" onBlur="stopCalc();" name="sessionTime">
<label class="form-check-label" for="six-seven">6:00 PM - 7:00 PM</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="7:00 PM - 8:00 PM" id="seven-eight" onFocus="startCalc();" onBlur="stopCalc();" name="sessionTime">
<label class="form-check-label" for="seven-eight">7:00 PM - 8:00 PM</label>
</div>
</div>
这是JS:
$('input[name=sessionTime]').change(function(){
if($(this).is(':checked')){
$('input[name=sessionTime]').attr('disabled',true);
$(this).attr('disabled', false);
console.log('disabled');
} else {
$('input[name=sessionTime]').attr('disabled', false);
console.log('not disabled');
}
});
守则以这种方式正常运作。 现在,我需要做的是我需要在下一个表单中传递每个选中的复选框,因此我需要将元素名称写为 selectTime [] 执行此操作后,我的JS现在无法正常工作。我已经找到了解决方案,但无法为我工作。你对此有什么解决方案吗?
以下是更新后的代码:
<div id="selectSessionEvening" class="sessionEvening">
<p style="font-weight:bold;">Evening Session</p>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="4:00 PM - 5:00 PM" id="four-five" onFocus="startCalc();" onBlur="stopCalc();" name="sessionTime[]">
<label class="form-check-label" for="four-five">4:00 PM - 5:00 PM</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="5:00 PM - 6:00 PM" id="five-six" onFocus="startCalc();" onBlur="stopCalc();" name="sessionTime[]">
<label class="form-check-label" for="five-six">5:00 PM - 6:00 PM</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="6:00 PM - 7:00 PM" id="six-seven" onFocus="startCalc();" onBlur="stopCalc();" name="sessionTime[]">
<label class="form-check-label" for="six-seven">6:00 PM - 7:00 PM</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="7:00 PM - 8:00 PM" id="seven-eight" onFocus="startCalc();" onBlur="stopCalc();" name="sessionTime[]">
<label class="form-check-label" for="seven-eight">7:00 PM - 8:00 PM</label>
</div>
</div>
这是工作的jsfiddle:https://jsfiddle.net/humanware/y1c330f8/4/
更新 我尝试在JS中执行此操作:
$('input[name=sessionTime[]]').change(function(){
if($(this).is(':checked')){
$('input[name=sessionTime[]]').attr('disabled',true);
$(this).attr('disabled', false);
console.log('disabled');
} else {
$('input[name=sessionTime[]]').attr('disabled', false);
console.log('not disabled');
}
});
答案 0 :(得分:2)
试试这个: 当名称中有特殊字符时,用户会引用名称。
我在这里修改了你的代码 - 使用这个
$('input[name="sessionTime[]"]').change(function(){
var checked = $(this).is(':checked');
if(checked){
$('input[name="sessionTime[]"]').not(this).prop('disabled',checked);
} else {
$('input[name="sessionTime[]"]').prop('disabled', checked);
console.log('not disabled');
}
});