多个复选框控制单个select启用禁用的jQuery实现问题求助
错误原因
$(":checkbox").prop("checked")只会返回匹配到的第一个复选框的选中状态,所以只有第一个勾选框的操作会影响下拉选择器状态,其余复选框的状态变化不会被识别。- 你需要判断所有复选框中是否存在至少一个被选中的状态,应该使用
is(":checked")方法,该方法只要匹配到任意一个符合规则的元素就会返回true。
修正后的实现代码
$(document).ready(function(){ var enable_sel = function(){ $("#pizza_kind").prop("disabled", !$(":checkbox").is(":checked")); }; enable_sel(); $(":checkbox").change(enable_sel); });
可选优化:如果页面存在其他无关复选框,可给当前三个关联复选框添加统一类名(例如
class="pizza-check"),将代码中$(":checkbox")替换为$(".pizza-check")即可避免逻辑串扰。
修正后即可实现预期效果:初始状态如果没有复选框被勾选,下拉选择器默认禁用;只要任意一个复选框被勾选,下拉选择器自动启用;所有复选框取消勾选后,下拉选择器恢复禁用。
内容的提问来源于stack exchange,提问作者Eduardo
相关产品推荐
相关产品推荐

