使用Jquery隐藏和显示div

时间:2010-05-12 12:03:12

标签: jquery

我正在使用c#进行编程,请参阅下面的代码:

<p><b>
            <%=ResourceFile.GetResourceString("c_FreeLiveOnlineProgramInterest")%>
        </b>&nbsp;<font color="red">*</font>&nbsp;
        <br>
        <asp:dropdownlist id="ddl_ProgramInterest" tabIndex="3" Runat="server"></asp:dropdownlist><br>
        <asp:requiredfieldvalidator id="reqv_ddl_ProgramInterest" runat="server" Display="Dynamic" ControlToValidate="ddl_ProgramInterest"></asp:requiredfieldvalidator></p>
    <div style="DISPLAY: none" id="divOther" runat="server">
        <p><b>
                <%=ResourceFile.GetResourceString("c_FreeLiveOnlineProgramInterestOther")%>
            </b>
            <br>
            <asp:textbox id="txt_Other" tabIndex="6" Width="155" runat="server"></asp:textbox><br>
            <asp:requiredfieldvalidator id="reqv_txt_Other" runat="server" Display="Dynamic" ControlToValidate="txt_Other"></asp:requiredfieldvalidator></p>
    </div>

上面你可以看到我有一个下拉列表“感兴趣的程序”以及上面的下拉列表有两个值'实时'和'其他',我想当用户选择其他时,那么“divOther”将出现或将被隐藏同样的requirefieldvalidator'reqv_txt_Other“,我在代码隐藏中编写了下面的代码,它的工作正常,但在服务器端。

private void ddl_ProgramInterest_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            if (ddl_ProgramInterest.SelectedValue == ResourceFile.GetResourceString("c_FreeLiveOnlineProgramInterestValue2"))
            {           
                divOther.Style.Add("display","block");
                reqv_txt_Other.Enabled = true;
            }
            else
            {           
                divOther.Style.Add("display","none");
                reqv_txt_Other.Enabled = false;
                txt_Other.Text="";
            }
        }

请建议如何使用JQuery!

由于

1 个答案:

答案 0 :(得分:1)

你可以在jQuery中这样做:

<script type="text/javascript">
  $(function() {
    $("#<%=ddl_ProgramInterest.ClientID%>").change(function() {
      var other = $(this).val() === '<%=ResourceFile.GetResourceString("c_FreeLiveOnlineProgramInterestValue2")%>';
      $("#divOther").toggle(other);
      $("#<%=reqv_txt_Other.ClientID%>").attr("enabled", other);    
    }).change(); //fire it on load
  });
</script>

只需从runat="server"移除divOther,因为不再需要它。上面的解决方案需要在您的页面中工作,否则服务器标签将无法解析(并且资源字符串必须以任一方式位于页面中)。

如果你想在(在这里看到)更简洁的方式找到元素,给它们一个类,例如给出下拉列表CssClass="interest"并将jQuery选择器从$("#<%=ddl_ProgramInterest.ClientID%>")更改为{{1 ,有点清洁:)