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

如何让jQuery在页面加载时禁用单选按钮列表的指定选项?

问题描述

我有一个渲染后的单选按钮列表,代码如下:

<input id="rblOD_1" type="radio" name="ctl00$ContentPlaceHolder1$rblOD" value="1">
<input id="rblOD_2" type="radio" name="ctl00$ContentPlaceHolder1$rblOD" value="2">
<input id="rblOD_3" type="radio" name="ctl00$ContentPlaceHolder1$rblOD" value="3">

我希望页面加载时仅禁用最后一项,完成数据库校验后再启用它。我使用以下代码尝试实现:

$("input:radio[name='ctl00$ContentPlaceHolder1$rblOD'][value='3']")
    .attr('disabled', 'disabled');

该代码在页面加载时不生效,但在单选按钮列表的change事件中有效。请问如何让它在页面加载时或无需点击/change事件即可生效?

解决方案

1. 确保代码在DOM完全加载后执行

代码加载时不生效的核心原因是执行时机过早,目标DOM元素还未渲染完成。将代码包裹在jQuery的DOM就绪回调中,确保DOM加载完成后再执行操作:

$(document).ready(function() {
    $("input:radio[name='ctl00$ContentPlaceHolder1$rblOD'][value='3']")
        .prop('disabled', true);
});

也可以使用更简洁的简写形式:

$(function() {
    $("input:radio[name='ctl00$ContentPlaceHolder1$rblOD'][value='3']")
        .prop('disabled', true);
});

2. 用prop()替代attr()控制禁用状态

对于disabled这类布尔型DOM属性,jQuery的prop()方法比attr()更可靠。attr()操作的是HTML标签上的属性,而prop()直接操作DOM元素的属性值,动态修改状态时表现更稳定。

3. 直接在HTML中初始禁用(可选)

如果后端渲染页面时可以控制HTML输出,直接给目标单选按钮添加disabled属性,页面加载后就会自动处于禁用状态,后续完成校验后再用JS启用:

<input id="rblOD_3" type="radio" name="ctl00$ContentPlaceHolder1$rblOD" value="3" disabled>

启用时执行代码:

$("input:radio[name='ctl00$ContentPlaceHolder1$rblOD'][value='3']")
    .prop('disabled', false);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:52:39