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

jQuery动态添加disabled属性不生效问题咨询

问题排查及解决方案

核心错误原因

  • 第一:jQuery 不存在 addAttr() 方法,你错误调用了不存在的API,导致设置disabled属性的逻辑直接报错中断。正确的属性设置方法为 attr(),对于disabled这类布尔属性更推荐使用 prop() 方法。
  • 第二:val() 方法返回的是字符串类型的值,你直接和数字0做相等判断,弱类型比较存在隐式转换的潜在风险,容易出现判断逻辑不符合预期的问题。
  • 第三:disabled属于DOM布尔属性,使用removeAttr()之后再重新用attr()设置的兼容性不如prop()方法稳定,部分场景下HTML属性修改不会同步触发DOM状态更新。

修正后代码

$('#section_option').change(function () {
  // 转成数字统一判断逻辑,也可以直接和字符串'0'比较
  var selectedClass = Number($("#section_option option:selected").val());
  if (selectedClass !== 0) {
    $("#sectionname").prop("disabled", false);
    $("#sectionname").removeClass("disabled");
  } else {
    $("#sectionname").prop("disabled", true);
    $("#sectionname").addClass("disabled");
  }     
});

优化说明

  • 用prop()统一管理disabled布尔属性,修改后会直接同步DOM元素的可用状态,不存在属性不生效的问题
  • 显式将下拉框选中值转成数字后用全等===判断,避免隐式类型转换带来的逻辑异常
  • 简化了判断分支,不需要多余的else if(selectedClass == 0)判断,逻辑更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:18:01