2013-03-17 44 views
0

我需要啓用/禁用asp.TextBox /輸入取決於CheckBox。如果CheckBox.Checked = true,那麼我需要啓用asp.TextBox/Input,或者如果CheckBox.Checked = false,那麼我需要禁用asp.TextBox/Input。基於CheckBox.Checked啓用/禁用asp:TextBox控件true或false

下面是我有的代碼,但它只適用於第一次點擊,這意味着如果我檢查框將啓用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> 
+0

嗯...奇怪。爲什麼它有什麼? 'fncport(this.form.isportreqinput,...)'不應該知道控件,因爲默認的ASP.net會呈現另一個ID。 – 2013-03-17 21:14:58

+0

對不起,不確定你的意思? – jorame 2013-03-17 21:18:15

+1

如果您在瀏覽器中查看呈現的HTML代碼,則您的控件的ID應該不像'ctl00_ContentPlaceHolder_isportreqinput'那樣非常漂亮。但是你的'onclick'處理程序用原始ID調用函數。如果您沒有更改默認ID渲染,則應該使用'fncport(this.form。<%= isportreqinput.ClientID%>,...)'來獲取呈現的客戶端ID。 – 2013-03-17 21:23:00

回答

0

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; 
    } 
+0

此外,因爲控件與runat =「server」一起運行,ids更改,您可能需要使用ClientID – Aristos 2013-03-17 21:25:34

+0

@Aristos調用它們,對,錯過:) – 2013-03-17 21:26:06

+0

謝謝您的幫助 – jorame 2013-03-17 21:27:14

0

不知道如果你粘貼代碼或複製它。但也有一些語法問題:

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

應該是:

if (control.checked == false) { 
      objname.disabled = true; 
} 
相關問題