本文介绍如何通过 javascript 实现单选按钮(radio button)的动态控制:当用户选择“yes”时,自动禁用或隐藏“no”选项,确保逻辑互斥且界面响应及时。
在 ASP.NET MVC 中使用 @Html.RadioButtonFor 生成的单选按钮,默认属于同一 name 组(由模型属性 ReinstatementType 自动绑定),天然具备单选互斥性。但若需增强交互体验——例如选中 “YES” 后立即禁用或隐藏 “NO”,则需借助客户端脚本实现。
以下 JavaScript 代码监听 #yesReinstate 的 change 事件,一旦其被选中,立即将 #noReinstate 设为 disabled:
? 注意:DOMContentLoaded 确保 DOM 加载完成后再执行脚本;同时校验元素是否存在,避免因渲染顺序导致 getElementById 返回 null。
若希望视觉上彻底移除“NO”选项(例如节省空间或强调决策唯一性),可改用 style.display = 'none':
yesRadio.addEventListener("change", function () {
noRadio.style.display = this.checked ? 'none' : 'inline';
// 同时建议同步 disabled 状态,防止通过 JS 手动修改绕过
noRadio.disabled = this.checked;
});⚠️ 重要提醒:
@Html.RadioButtonFor(m => m.ReinstatementType, "1", new { @id = "yesReinstate" }) YES
@Html.RadioButtonFor(m => m.ReinstatementType, "2", new { @id = "noReinstate" }) NO