You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery复选框取消勾选时未移除disabled属性如何解决

问题产生原因

核心错误出在勾选状态的判断逻辑上:

  • 你在#alt_hp的change事件回调里,用了$("input[type=checkbox]").is(":checked")作为判断条件,这个选择器会匹配页面上所有的复选框元素,只要页面里任意一个复选框处于勾选状态(比如页面其他位置的“同意条款”“记住登录状态”这类默认勾选的复选框,和当前功能完全无关),这个判断就会返回true。
  • 这就导致你取消勾选#alt_hp的时候,只要页面还有其他勾选的复选框,代码永远走不到else分支,自然不会移除对应字段的disabled属性。
修复方案

只需要把判断条件改成专门校验#alt_hp本身的勾选状态即可,不要用全局复选框选择器做判断。推荐在事件回调里直接用this指代当前触发事件的#alt_hp元素,逻辑最严谨也不会受其他元素干扰,修复后的完整代码如下:

<script>
$("#alt_hp").change(function() {
    // 判断当前触发事件的#alt_hp是否勾选
    if ($(this).is(":checked")) {
        $("#new_displacement").val('')
        // id选择器全局唯一,不需要额外加input前缀,选择效率更高
        $("#induction, #heads, #camshaft, #turbo, #boost, #inc_displacement")
            .prop("checked", false)
            .prop("disabled", true)
    } else {
        $("#induction, #heads, #camshaft, #turbo, #boost, #inc_displacement")
            .prop("disabled", false)
    }
});
</script>

补充说明:如果你习惯直接用id选择器做判断,也可以把if条件写成$("#alt_hp").is(":checked"),效果和用$(this)一致,只是$(this)的写法性能稍好,也不会因为id写错出现匹配问题。

内容的提问来源于stack exchange,提问作者Charles Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:42:27