我想检查是否选中了两个复选框并启用其他复选框。请注意,无法访问HTML。任何提示都可能有所帮助,因为这可能很容易解决。
以下代码:
//this disables checkboxes on load
for (var i = 1; i < 5; i++){
$("#xQ7v3_" +i).prop("disabled", true );
$("#xQ7v4_" +i).prop("disabled", true );
}
//if any two ids are checked want to enable the ones that are disabled on load but does not work basically does nothing, no console errors
$('#xQ7v1_1, #xQ7v2_1, #xQ7v1_2, #xQ7v2_2, #xQ7v1_3, #xQ7v2_3, #xQ7v1_4, #xQ7v2_4').change(function() {
for (var i = 1; i < 5; i++)
if ($('#xQ7v1_1, #xQ7v2_1, #xQ7v1_2, #xQ7v2_2, #xQ7v1_3, #xQ7v2_3, #xQ7v1_4, #xQ7v2_4').is(':checked').length > 1 ) {
$("#xQ7v3_" +i).prop("disabled", false );
$("#xQ7v4_" +i).prop("disabled", false );
} else{
$("#xQ7v3_" +i).prop("disabled", true );
$("#xQ7v4_" +i).prop("disabled", true );
}
});
答案 0 :(得分:2)
Jquery的.is()
在...之后返回一个布尔值。
根据选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定参数匹配,则返回 true 。
这意味着您需要从
更改jquery选择器$('#xQ7v1_1, #xQ7v2_1, #xQ7v1_2, #xQ7v2_2, #xQ7v1_3, #xQ7v2_3, #xQ7v1_4, #xQ7v2_4').is(':checked').length
为...
$('#xQ7v1_1:checked, #xQ7v2_1:checked, #xQ7v1_2:checked, #xQ7v2_2:checked, #xQ7v1_3:checked, #xQ7v2_3:checked, #xQ7v1_4:checked, #xQ7v2_4:checked').length
一个例子:
$("input").change(() => {
console.log($('#check1:checked, #check2:checked').length);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id=check1 type="checkbox" id="1" name="1">
<label for="1">Box 1</label>
<input id="check2" type="checkbox" id="2" name="2">
<label for="1">Box 2</label>
答案 1 :(得分:2)
我注意到所有ID都以xQ7v
开头,为什么不简化为:
$("input[id^='xQ7v']:checked").length