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

如何使用jQuery在条件成立时禁用checkbox?代码触发条件后复选框未禁用

问题原因

  1. 执行顺序错误:你在append将拼接的表格元素插入DOM之前就执行了checkbox禁用代码,此时要操作的checkbox还不存在于页面中,jQuery无法选中目标元素,设置自然不生效。
  2. 选择器语法错误:你用的$('.checkBoxClass:input([value=' + t11 + ')')语法不符合jQuery选择器规范,正确的属性选择器不需要多余括号,格式应为input[value="属性值"]。
  3. 数值比较隐患:t8、t9可能是字符串类型,直接用==比较可能出现类似"283.5" != "283.50"的误判,建议统一转成相同精度的数值再比较。

最优解决方案(拼接HTML时直接添加禁用属性,性能最高)

在拼接checkbox的HTML代码前先判断条件,符合要求直接加disabled属性,不需要后续DOM操作:

// 在你的trtoggle拼接逻辑前加这段判断
let disabledAttr = ''
// 统一转成两位小数的数值比较,避免类型/精度问题
if (parseFloat(t8).toFixed(2) === parseFloat(t9).toFixed(2)) {
  disabledAttr = 'disabled'
}

// 拼接input的时候插入disabledAttr变量即可
trtoggle += 
"<tr><td class='invoicedate_check'>" + t6 + 
"</td><td class='invoiceno_check'>" + t7 + 
"</td><td style='text-align: right;' class='invoiceamt_check'>" + t8 + 
"</td><td  style='text-align: right;' class=''>" + t9 + 
"</td><td  style='text-align: right;' class=''>" + balance + 
"</td><td class='checkBoxtd" + t11 + 
"'><input type='checkbox' " + disabledAttr + " class='checkBoxClass checkBoxClassse" + t11 + 
"' id='checkbox"+t11+"' name='myTextEditBox[]' value='" + t11 + 
"'/> Select</td></tr>";

原来的if(t8 == t9)里的那段$('.checkBoxClass:input([value=' + t11 + '])').prop('disabled', true);代码直接删除即可。

备选方案(append之后再批量设置)

如果要保留单独设置的逻辑,就把禁用代码移到append执行之后,修改选择器写法:

// 先把元素插入DOM
$(".tableinvoice_proj").last().append(trtoggle);

// 再批量处理禁用逻辑,也可以直接通过余额为0判断,不需要额外存t8t9
$('.tableinvoice_proj:last .checkBoxClass').each(function(){
  const balance = parseFloat($(this).closest('tr').find('td:eq(4)').text()).toFixed(2)
  if(balance === '0.00'){
    $(this).prop('disabled', true)
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:18:04