启用/禁用基于CheckBox.Checked true或false的asp:TextBox控件

时间:2013-03-17 21:07:40

标签: javascript asp.net html

我需要根据CheckBox启用/禁用asp.TextBox / Input。如果CheckBox.Checked = true,那么我需要启用asp.TextBox / Input或者如果CheckBox.Checked = false,那么我需要禁用asp.TextBox / Input。

下面是我的代码,但它只适用于第一次点击,这意味着如果我选中该框,它将启用asp.TextBox / Input但如果我取消选中它将不会禁用asp.TextBox / Input。

此外,默认情况下,在Page_Load上禁用asp.TextBox / Input。

//If checked it should enable the input.
//If unchecked it should disable the input.
If Port is Required?<label class="checkbox">
                        <input type="checkbox" id="isportreqinput" name="isportreqinput" runat="server" onclick="fncport(this.form.isportreqinput, this.form.porttxt);"  />
                        <span class="metro-checkbox">Check Me</span>
                    </label>

//This is the input I need to disable/enable depending on the checkbox
<input type="text" name="porttxt" id="porttxt" runat="server" disabled="disabled" />

    <script type="text/javascript">
        function fncport(control, objname) {

            if (control.checked == true) {
                objname.disabled = false;
            }
            if (control.cheched == false) {
                objname.disabled = true
            }
        }
    </script>

2 个答案:

答案 0 :(得分:1)

this.form.isportreqinput不是从HTML中获取对isportreqinput复选框的引用的有效方法。 this实际上是对复选框的引用。

如果您需要传入复选框的ID并输入到您的函数,请将其作为文本传递并使用document.getElementById()

<label class="checkbox">
    <input type="checkbox" id="isportreqinput" name="isportreqinput" runat="server"    
        onclick="fncport('isportreqinput', 'porttxt');"  />
    <span class="metro-checkbox">Check Me</span>
</label>

<input type="text" name="porttxt" id="porttxt" runat="server" disabled="disabled" />

另外,你在第二个if语句中拼错了checked。您甚至不需要if语句,只需将禁用值设置为与检查值相反的值。

    function fncport(controlid, objnameid) {
        var control = document.getElementById(controlid);
        var objname = document.getElementById(objnameid);

        objname.disabled = !control.checked;
    }

答案 1 :(得分:0)

不确定您是粘贴代码还是复制代码。但是有一些语法问题:

 if (control.cheched == false) {
            objname.disabled = true
 }

应该是:

 if (control.checked == false) {
            objname.disabled = true;
 }