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

如何基于动态下拉选择器的选中选项禁用指定input输入字段?

问题原因

你当前代码的核心问题有两个:

  • DOM元素的禁用属性拼写错误,正确属性名是disabled,你写的disable遗漏了末尾的字母d
  • 你定义的TipoCompra函数没有绑定到下拉选择框的change事件,选择选项时不会触发执行

方案1:原生JavaScript实现

步骤1:修正函数代码

function TipoCompra(){
    var tipoCompra = document.getElementById('tipoCompra').value;
    var fob = document.getElementById('fob');
    if (tipoCompra == 'Nacional'){
        fob.disabled = true;
        // 可选:禁用时清空已输入的内容
        fob.value = '';
    } else {
        fob.disabled = false;
    }
}

步骤2:给下拉框绑定change事件

你可以直接在select标签上添加onchange属性:

<select name="" class="form-control" id="tipoCompra" required onchange="TipoCompra()">

也可以在JS代码中动态绑定:

document.getElementById('tipoCompra').addEventListener('change', TipoCompra);

方案2:jQuery实现

如果你习惯用jQuery写法,可以直接用以下代码,无需单独声明函数:

$(function(){
    // 监听下拉框选择变化
    $('#tipoCompra').on('change', function(){
        const selectedVal = $(this).val();
        // 直接通过prop修改disabled属性,判断逻辑可以简化成一行
        $('#fob').prop('disabled', selectedVal === 'Nacional');
        // 可选:选中Nacional时清空输入框内容
        if(selectedVal === 'Nacional') $('#fob').val('');
    })
})

补充注意事项

你当前HTML代码中input标签写的disabled="false"是无效的,HTML原生的disabled是布尔属性,只要标签上存在这个属性,不管赋值为true还是false都会生效,建议删掉这个属性,默认状态就是可输入的;如果需要默认禁用,直接在标签上写disabled即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:15:08