通过javascript中的复选框禁用控件

时间:2012-01-17 18:50:59

标签: javascript asp.net

我目前有4个文本框,1个复选框和一个下拉列表。我试图禁用textboexes和dropdownlist 正在检查复选框。我当前的代码不起作用,但我似乎无法在其中找到错误。我是使用JavaScript的新手。

function enableCheckBox(phyAddressCheckBox, tb1, tb2, tb3, file1, tb4)
{
    if (document.getElementById(phyAddressCheckBox).checked) 
{
document.getElementById('tb1').enabled = true;
document.getElementById(tb2).enabled = true;
document.getElementById(tb3).enabled = true;
document.getElementById(file1).enabled = true;
document.getElementById(tb4).enabled = true;
}
else
{
document.getElementById(tb1).enabled = false;
document.getElementById(tb2).enabled = false
document.getElementById(tb3).enabled = false;
document.getElementById(file1).enabled = false;
document.getElementById(tb4).enabled = false;
}
}

编辑 我在两个条件下都将所有属性设置为禁用,但没有任何作用

<script type="text/javascript" language="javascript">
function enableCheckBox(phyAddressCheckBox, tb1, tb2, tb3, file1, tb4)
{
    if (document.getElementById(phyAddressCheckBox).checked) 
{
    document.getElementById('tb1').disabled = 'disabled';
document.getElementById(tb2).disabled = 'disabled';
document.getElementById(tb3).disabled = 'disabled';
document.getElementById(file1).disabled = 'disabled';
document.getElementById(tb4).disabled = 'disabled';
}
else
{
document.getElementById(tb1).disabled = 'disabled';
document.getElementById(tb2).disabled = 'disabled';
document.getElementById(tb3).disabled = 'disabled';
document.getElementById(file1).disabled = 'disabled';
document.getElementById(tb4).disabled = 'disabled';
}
}
</script>

我还在控制代码中添加了。

<asp:CheckBox ID="phyAddressCheckBox" runat="server"  onclick="enableCheckBox(this.ID, physicalAddressTextbox, PhysicalAddress2Textbox, CityTextbox, physicalStateDropDownList,physicalZipTextbox)" style="text-align: left" />

4 个答案:

答案 0 :(得分:1)

尝试:

document.getElementById(tb1).disabled='disabled';

答案 1 :(得分:1)

我不同意那些告诉你使用disabled='disabled'的人在输入元素上的disabled属性采用布尔值,与HTML属性不同。 https://developer.mozilla.org/en/DOM/HTMLInputElement

从您传递给enableCheckBox的变量的名称,看起来您传递的是DOM节点而不是ID。

另一个问题是你要传递this.ID,你应该通过this.id。更好的是,只需传递元素本身。请参阅此示例http://jsfiddle.net/mendesjuan/7ZEvk/2/

最后一个问题(在最初的示例中)是您尝试设置enabled属性,但这不存在。您必须设置disabled属性。

HTML

<input type='checkbox' id='cbox' onclick="enableCheckBox(this, 'text1', 'text2', 'text3', 'sel');"/>

<input id='text1' />
<input id='text2' />
<input id='text3' />
<select id='sel'>
    <option>hello</option>
</select>

的JavaScript

// This is a lot like your function, but is less repetitive
function enableCheckBox(cbox /*, ... ids of fields to enable/disable */){    
    for (var i = 1; i < arguments.length; i++) {
        document.getElementById(arguments[i]).disabled = cbox.checked;
    }
}

答案 2 :(得分:0)

使用disabled属性:

document.getElementById(tb1).disabled = 'disabled';

答案 3 :(得分:0)

利用removeAttributesetAttribute,如果disableddisabled,则elementenabled。你可以像

那样做
function enableCheckBox(phyAddressCheckBox, tb1, tb2, tb3, file1, tb4){
    if (document.getElementById(phyAddressCheckBox).checked){
       document.getElementById(tb1).removeAttribute("disabled");
       document.getElementById(tb2).removeAttribute("disabled");
       document.getElementById(tb3).removeAttribute("disabled");
       document.getElementById(file1).removeAttribute("disabled");
       document.getElementById(tb4).removeAttribute("disabled");
    }else{
       document.getElementById(tb1).setAttribute("disabled", "disabled");
       document.getElementById(tb2).setAttribute("disabled", "disabled");
       document.getElementById(tb3).setAttribute("disabled", "disabled");
       document.getElementById(file1).setAttribute("disabled", "disabled");
       document.getElementById(tb4).setAttribute("disabled", "disabled");
   }
}