我正在使用c#进行编程,请参阅下面的代码:
<p><b>
<%=ResourceFile.GetResourceString("c_FreeLiveOnlineProgramInterest")%>
</b> <font color="red">*</font>
<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!
由于
答案 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 ,有点清洁:)