我有一个包含6个复选框的复选框列表。每个复选框旁边都有一个相应的单选按钮。页面加载时,单选按钮被禁用。当我选中复选框时,我想启用它旁边的单选按钮。此外,如果我取消选中复选框,则会取消选中旁边的单选按钮并再次禁用。
该复选框供用户选择他们想要的项目,单选按钮供用户选择他喜欢的项目。
我在下面尝试过这段代码,但它无效......
$(document).ready(function () {
$("#rbtnlLeadAgencies input[type='radio']").each(function () {
$("#rbtnlLeadAgencies input[type='radio']").prop('disabled', true);
});
$("#cbxlAgencies input[type='checkbox']").each.change(function () {
if ($("#cbxlAgencies_0 input[type='checkbox']").is(':checked')) $("#rbtnlLeadAgencies_0 input[type='radio']").prop('disabled', false);
if ($("#cbxlAgencies_1 input[type='checkbox']").is(':checked')) $("#rbtnlLeadAgencies_1 input[type='radio']").prop('disabled', false);
if ($("#cbxlAgencies_2 input[type='checkbox']").is(':checked')) $("#rbtnlLeadAgencies_2 input[type='radio']").prop('disabled', false);
if ($("#cbxlAgencies_3 input[type='checkbox']").is(':checked')) $("#rbtnlLeadAgencies_3 input[type='radio']").prop('disabled', false);
if ($("#cbxlAgencies_4 input[type='checkbox']").is(':checked')) $("#rbtnlLeadAgencies_4 input[type='radio']").prop('disabled', false);
if ($("#cbxlAgencies_5 input[type='checkbox']").is(':checked')) $("#rbtnlLeadAgencies_5 input[type='radio']").prop('disabled', false);
});
});
标记和jQuery代码位于jsfiddle
实现此行为的任何想法?
提前致谢!
答案 0 :(得分:0)
$(document).ready(function () {
$('input:radio[id^="rbtnlLeadAgencies_"]').prop('disabled', true);
$('input:checkbox[id^="cbxlAgencies"]').change(function () {
var id = this.id.replace('cbxlAgencies_', '');
$("#rbtnlLeadAgencies_" + id).prop('disabled', !this.checked);
});
});
答案 1 :(得分:0)
尝试
$(document).ready(function () {
$("#rbtnlLeadAgencies input[type='radio']").prop('disabled', true);
$("#cbxlAgencies input[type='checkbox']").change(function () {
var idx = $(this).closest('tr').index();
var radios = $("#rbtnlLeadAgencies tr").eq(idx).find('input[type="radio"]').prop('disabled', !this.checked);
if(!this.checked){
radios.prop('checked', false);
}
});
});
演示:Fiddle
答案 2 :(得分:0)
正如我在评论中所说的那样,解决方案在标记方面有点贵,但更通用:
<强> HTML 强>
<input id="cbxlAgencies_0" data-for-radio="rbtnlLeadAgencies_0" type="checkbox"/>
<强> JS 强>
$(document).ready(function () {
$("input[type='checkbox'][data-for-radio]").change(function () {
$('#' + $(this).data('for-radio')).prop('disabled', !this.checked);
}).change();
});
答案 3 :(得分:-1)
$(document).ready(function () {
$("#rbtnlLeadAgencies input[type='radio']").attr('disabled', true);
$("#cbxlAgencies input[type='checkbox']").change(function () {
$("#rbtnlLeadAgencies_0").prop('disabled', !this.checked);
$("#rbtnlLeadAgencies_1").prop('disabled', !this.checked);
$("#rbtnlLeadAgencies_2").prop('disabled', !this.checked);
$("#rbtnlLeadAgencies_3").prop('disabled', !this.checked);
$("#rbtnlLeadAgencies_4").prop('disabled', !this.checked);
$("#rbtnlLeadAgencies_5").prop('disabled', !this.checked);
});
});