如何基于动态下拉选择器的选中选项禁用指定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
相关产品推荐
相关产品推荐

