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

切换单选按钮时prop('disabled', true)无法禁用select控件问题

问题描述

尝试切换单选按钮时,控制.key类的select控件禁用状态,但操作未生效。不过在$(document).ready()开头执行的$(".key").prop('disabled', true);能正常生效。相关代码如下:

HTML代码

<div class="card-body">
    @*Title*@
    <div class="form-group">
        <label>Title: </label>
        <div class="row">
            <div class="col-lg-6">
                <label class="option option-plain">
                    <span class="option-control">
                        <span class="radio">
                            <input type="radio" name="title_option" value="0" checked="checked" />
                            <span></span>
                        </span>
                    </span>
                    <span class="option-label">
                        <span class="option-head">
                            <span class="option-title">
                                Key Pair
                            </span>
                        </span>
                        <span class="option-body">
                            Description
                        </span>
                    </span>
                </label>
            </div>
            <div class="col-lg-6">
                <label class="option option option-plain">
                    <span class="option-control">
                        <span class="radio">
                            <input type="radio" name="title_option" value="1" />
                            <span></span>
                        </span>
                    </span>
                    <span class="option-label">
                        <span class="option-head">
                            <span class="option-title">
                                Key Pair
                            </span>
                        </span>
                        <span class="option-body">
                            Description
                        </span>
                    </span>
                </label>
            </div>
        </div>
    </div>
<div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                <label>Signing Key: </label>
                <select class="selectpicker form-control key" title="key">
                    <option>Key</option>
                </select>
                <span class="description">Description</span>
            </div>
        </div>
        <div class="col-sm-6">
            <div class="form-group">
                <label>Encryption Key: </label>
                <select class="selectpicker form-control key" title="key">
                    <option>Key</option>
                </select>
                <span class="description">Description</span>
            </div>
        </div>
    </div>

JavaScript代码

$(document).ready(function () {
    $(".key").prop('disabled', true);
    $("input[type=radio][name=title_option]").change(function () {
        console.log($(this).val());
        if ($(this).val() == 0) {
            $(".key").prop('disabled', true);
        } else {
            $(".key").prop('disabled', false);
        }

    });
});
原因分析

你的select控件使用了selectpicker类,这是Bootstrap Select插件生成的自定义下拉组件。直接通过prop()修改原生select的disabled属性后,插件不会自动同步更新UI状态,所以看起来操作没生效。而页面加载时的代码能生效,是因为插件初始化前就设置了原生属性,初始化时会读取这个状态。

解决方案

修改JavaScript代码,在设置disabled属性后,调用Bootstrap Select的refresh方法,强制插件更新UI:

$(document).ready(function () {
    $(".key").prop('disabled', true).selectpicker('refresh');
    $("input[type=radio][name=title_option]").change(function () {
        console.log($(this).val());
        if ($(this).val() == 0) {
            $(".key").prop('disabled', true);
        } else {
            $(".key").prop('disabled', false);
        }
        // 调用refresh方法同步插件状态
        $(".key").selectpicker('refresh');
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:37:01