2011-05-10 67 views
2

我正在用asp.net與vb.net創建一個頁面,我有一個複選框,我想用來激活四個文本框和一個下拉列表。我曾嘗試使用JavaScript來實現這一功能,但目前爲止還沒有成功。我已經嘗試過在這一點上激活一個文本框。有什麼建議麼?複選框激活asp.net中的文本框與vb.net

這裏是我不同的對象:

  • cbPractitioner(複選框)
  • txtNPI(文本框)
  • txtLicense(文本框)
  • txtDEA(文本框)
  • txtUpin(文本框)
  • ddSpecialty(下拉列表)

下面是Javascript代碼:

<script type="text/javascript"> 
    function ToggleTextBox(cbPractitioner, txtNPI) { 
     var textbox = document.getElementById(txtNPI); 
     if (cbPractitioner.checked) { 
      txtNPI.disabled = false; 
      txtNPI.value = ""; 
     } 
     else { 
      txtNPI.disabled = true; 
      txtNPI.value = ""; 
     } 
    } 
</script> 

這裏是asp.net代碼:

<asp:CheckBox ID="cbPractitioner" runat="server" 
       text="This person is a Practitioner" 
       style="font-family: Arial, Helvetica, sans-serif; font-size: small" 
       onclick="ToggleTextBox(this,'txtNPI')" /> 
<asp:Label ID="lblNPI" runat="server" CssClass="style9" Text="NPI:"></asp:Label> 

      &nbsp; 

      <asp:TextBox ID="txtNPI" runat="server" Width="165px" style="text align:left" CssClass="style9" 
        Font-Names="Arial" Font-Size="Small" Enabled="false"></asp:TextBox> 

      <br /> 
      <br /> 
      <asp:Label ID="lblDEA" runat="server" CssClass="style9" Text="DEA Number:"> </asp:Label> 
      &nbsp; 
      <asp:TextBox ID="txtDEA" runat="server" style="text-align:left" Font-Names="Arial" 
        Font-Size="Small" Enabled="false"></asp:TextBox> 
      <br /> 
      <br /> 
      <span class="style9"> 

      </span> 

     </td> 
     <td class="style14" valign="top"> 

      <asp:Label ID="lblLicense" runat="server" CssClass="style9" 
       Text="License Number:"></asp:Label> 
      &nbsp; 
      <asp:TextBox ID="txtLicense" runat="server" Font-Names="Arial" style="text-align:left" 
        Font-Size="Small" Height="20px" Enabled="false"></asp:TextBox> 
      <br /> 
      <br /> 
      <span class="style9"> 
      <asp:Label ID="Upin" runat="server" Text="Upin:"></asp:Label> 
      &nbsp; 
      </span> 

      <asp:TextBox ID="txtUpin" runat="server" Width="173px" CssClass="style9" style="text-align:left" 
        Font-Names="Arial" Font-Size="Small" Enabled="false"></asp:TextBox> 

     </td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <asp:Label ID="lblSpecialty" runat="server" 
       style="font-family: Arial, Helvetica, sans-serif; font-size: small" 
       Text="Specialty:"></asp:Label> 
      <asp:DropDownList ID="ddSpecialty" runat="server" 
       DataSourceID="Practitioner_Specialty" DataTextField="SPEC_TITLE" 
       DataValueField="SPEC_TITLE" Enabled="false"> 
      </asp:DropDownList> 

回答

4

的問題是,ASP.net文本框和其他控件實際上有標識:一個服務器端ID和客戶端ID。

服務器端ID是您在ID='foo' RunAt='server'的標記中指定的ID。您在所有服務器端.NET代碼中使用此ID。

對於客戶端代碼,您必須使用客戶端ID。客戶端ID是從服務器端ID生成的,並添加了一些字符以確保它是唯一的。爲了在您的Javascript中獲得客戶端ID,請寫下如下內容:

var cbPractitionerId ='<%= cbPractitioner.ClientID%>';

0

您將一個id傳遞給名爲'txtNPI'的函數,但是您將它用作對象。我已將代碼更改爲使用對象「文本框」,並添加了「removeAttribute」以刪除文本框的禁用狀態。

<script type="text/javascript"> 
    function ToggleTextBox(cbPractitioner, txtNPI) { 
     var textbox = document.getElementById(txtNPI); 
     if (cbPractitioner.checked) { 
      textbox.removeAttribute('disabled'); 
      textbox.value = ""; 
     } 
     else { 
      textbox.removeAttribute('disabled'); 
      textbox.value = ""; 
     } 
    } 
</script> 

另外,如果你想插入ASP.NET動態的ID爲JavaScript,你應該使用語法<%= Control.ControlID%>,這將插入動態生成控件名稱。