如何在选择某个选择列表值时禁用输入字段

问题描述:

如何从选择列表中选择某个值时禁用并使输入字段文本隐藏?在我的代码中,当我从下拉列表中选择“美国”时,我需要禁用并使输入文本隐藏。如何在选择某个选择列表值时禁用输入字段

我的HTML: JSFiddle Link

我的javascript:

document.getElementById('BillingCountryCode').onchange = function() { 
    if(this.value != '840') { 
     document.getElementById("BillingStateProvince").disabled = true; 
     document.getElementById("BillingStateProvince").style.display="none" 
    } else { 
     document.getElementById("BillingStateProvince").disabled = false; 
     document.getElementById("BillingStateProvince").style.display="block" 
    } 
} 
+1

ID必须是唯一的。如果你想隐藏第二个输入,“其他国家”,你必须给它一个不同于另一个的ID,或者改为使用类。这也不能完全解决你的问题,因为你的问题想隐藏标签“其他国家”。最好将两个输入都包装在一个元素中并隐藏/显示包装器。 – Josh 2013-05-14 16:15:15

你的小提琴的问题是你有两个具有相同ID的元素。您可以准确地完成已经存在的内容,只需在状态下拉列表或文本输入框中更改ID即可。更新后的代码可能如下所示,如果您只是将输入的文本命名为2:

document.getElementById('BillingCountryCode').onchange = function() { 
    if(this.value != '840') { 
     document.getElementById("BillingStateProvince").disabled = true; 
     document.getElementById("BillingStateProvince").style.display="none"; 
     document.getElementById("BillingStateProvince2").disabled = false; 
     document.getElementById("BillingStateProvince2").style.display="block"; 
    } 

    else { 
     document.getElementById("BillingStateProvince").disabled = false; 
     document.getElementById("BillingStateProvince").style.display="block"; 
     document.getElementById("BillingStateProvince2").disabled = true; 
     document.getElementById("BillingStateProvince2").style.display="none"; 
    } 
} 
+0

有没有办法解决它。我用来处理表单的第三方使用ID来处理该卡片。有没有办法可以为“BillingStateProvince2”添加Class而不是ID? – 2013-05-14 17:03:19

+0

当然,你可以找到你想要的元素,名称,ID,类等等。我认为真正的答案是你的HTML无效,并且我个人会使用不同的方法来完成这项工作,例如分配您的条件块中的ID。虽然您可以使用纯Javascript来循环并找到合适的类,但在这种特定情况下,您可能更容易使用jQuery。 – Duffmaster33 2013-05-14 17:10:41

+0

如何使用jQuery实现这个目标?我尝试这样做:document.getElementById('BillingCountryCode')。onchange = function(){ if(this.value!='840'){('#BillingStateProvince')。attr('disabled','disabled “); } else { document.getElementById(“BillingStateProvince”)。disabled = false; document.getElementById(“BillingStateProvince”)。style.display =“block”; ('。OtherStateProvince')。attr('disabled','disabled'); } } – 2013-05-14 17:14:02

如果我有问题,简单地反转if条件是这样的:

if(this.value === "840") { ... } 

这里是工作提琴: http://jsfiddle.net/antwonlee/cf4Sz/7/