2011-05-10 49 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%>,这将插入动态生成控件名称。