2013-06-22 54 views
1

我有以下代碼,它可以根據下拉列表中的值禁用或啓用文本框。JavaScript - 在更改下拉列表索引時禁用文本框

現在,這是我是如何從下拉列表使該代碼的引用:

不幸的是,代碼生成異常。我相信我正在使用錯誤的事件處理程序,即OnSelectedIndexChanged。我該如何糾正這種情況?

回答

2

1)替換OnSelectedIndexChanged平變化

2)

替換

變種DropDown_Total =的document.getElementById( 「DropDown_Total」)

變種DropDown_Total =的document.getElementById( 「<%= DropDown_Total.ClientID%>」)

所有的getElementById

3)替換(DropDown_Date.options [DropDown_Date.selectedIndex]。價值(DropDown_Date.options [DropDown_Date.selectedIndex]的.text兩個下拉

試試這個它的工作

<script type="text/javascript"> 
    function DisableEnable() { 
     var DropDown_Total = document.getElementById("<%= DropDown_Total.ClientID %>") 
     var Textbox_Total = document.getElementById("<%= Textbox_Total.ClientID %>") 
     var DropDown_Date = document.getElementById("<%= DropDown_Date.ClientID %>") 
     var Textbox_Date = document.getElementById("<%= Textbox_Date.ClientID %>") 

     if (DropDown_Total.options[DropDown_Total.selectedIndex].text == "Any Amount") { 

      Textbox_Total.disabled = true; 
     } 

     else { 
      Textbox_Total.disabled = false; 
     } 

     if (DropDown_Date.options[DropDown_Date.selectedIndex].text == "Any Date") { 
      Textbox_Date.disabled = true; 
     } 

     else { 
      Textbox_Date.disabled = false; 
     } 
    } 
</script> 

HTML

<asp:TextBox runat="server" ID="Textbox_Total" /> 
<asp:TextBox runat="server" ID="Textbox_Date" /> 
<asp:DropDownList ID="DropDown_Total" runat="server" onchange="DisableEnable();"> 
    <asp:ListItem>Any Amount</asp:ListItem> 
    <asp:ListItem>Exact Amount</asp:ListItem> 
    <asp:ListItem>Below Amount</asp:ListItem> 
    <asp:ListItem>Above Amount</asp:ListItem> 
</asp:DropDownList> 
<asp:DropDownList ID="DropDown_Date" runat="server" onchange="DisableEnable();"> 
    <asp:ListItem>Any Date</asp:ListItem> 
    <asp:ListItem>Exact Date</asp:ListItem> 
    <asp:ListItem>Before</asp:ListItem> 
    <asp:ListItem>After</asp:ListItem> 
</asp:DropDownList> 
+0

你這麼多:)它完美的作品:) – Matthew

3

使用onchange事件,它將爲JavaScript函數調用工作。 OnSelectedIndexChanged是服務器端事件。

+0

@Raghubat是這樣的? Matthew

+0

是的..如果你使用母版頁,那麼獲取控件的代碼是:var DropDown_Total = document.getElementById('<% DropDown_Total.ClientID%>'); – Raghubar

+0

非常感謝Raghubar :) – Matthew

1

只是用OnSelectedIndexChanged替換爲onchange,因爲onchange是由js處理的。 OnSelectedIndexChanged由後面的代碼處理。

+0

我嘗試了這個建議,但是雖然沒有產生異常,但是文本框並沒有被灰掉。 – Matthew

+0

你可以發佈小提琴鏈接嗎? 並確保您的代碼行 var DropDown_Total = document.getElementById(「DropDown_Total」) 返回適當的值。 有時cotrol id呈現不同的HTML。 –

+0

我從來沒有使用小提琴鏈接。給我一分鐘建立一個帳戶。 – Matthew

0

教程:在Javascript

如何禁用/啓用使用DropDownList文本框,在這個函數中,我們通過下拉列表ID和文本框id作爲參數js函數

<script type="text/javascript"> 
    function DisableEnableTxtbox(DropDown, txtbox) { 

     if (DropDown.options[DropDown.selectedIndex].text == "free") { 

      txtbox.disabled = true; 
     } 

     else { 
      txtbox.disabled = false; 
     } 

    } 
    </script> 

現在添加如下代碼:

<td align="center" class="line"> 
     <asp:DropDownList ID="ddl_MonP1" runat="server" CssClass="ppup2" onchange="DisableEnableTxtbox(this,txt_MonP1);"></asp:DropDownList> 
     <asp:TextBox ID="txt_MonP1" runat="server" CssClass="ppup" placeholder="Subject"></asp:TextBox> 
     </td>