问题描述
在网页中使用了updatepanel,用于通过下拉框内容的变动控制几个panel显示或者隐藏使用jquery代码$(function(){$("#<%=txtEmail.ClientID%>").focus(function(){if($(this).val()=="address@domain.com"){$(this).val("");}}).blur(function(){if($(this).val()==""){$(this).val("address@domain.com");}});})
用来在用户点击txtemail文本框时将其中的电子邮件示例地址清除掉。其中txtemail控件不在panel中,它总是显示的。我的问题是如果没有控制panel,也就是说显示的是开始缺省的那个panel这时jquery代码是可以正常运行的,但是只要通过下拉框改变了几个panel的显示属性,jquery代码就失效了。请问为什么呢?
解决方案
解决方案二:
补充一下,只要用下拉框控制了panel,就算改回开始那个缺省的panel也不行了。
解决方案三:
太模糊,看不懂你是怎样编写的。
解决方案四:
引用2楼sp1234的回复:
太模糊,看不懂你是怎样编写的。
您好。我是这样弄的。建立了一个下拉框<asp:DropDownListID="cboContractType"runat="server"AutoPostBack="True"><asp:ListItem>家具</asp:ListItem><asp:ListItem>家装</asp:ListItem><asp:ListItem>家政</asp:ListItem><asp:ListItem>家电</asp:ListItem></asp:DropDownList>在ProtectedSubcboContractType_SelectedIndexChanged事件中pnlJD4.Visible=FalsepnlJV4.Visible=FalsepnlJZ1.Visible=FalsepnlJZ4.Visible=FalseSelectCasecboContractType.SelectedIndexCase0pnlJV4.Visible=TrueCase1pnlJZ1.Visible=TrueCase2pnlJZ4.Visible=TrueCase3pnlJD4.Visible=TrueEndSelect每个panel中有不同的文本框用于像用户收集信息。根据业务类型不同,收集不同的信息。电子邮件信息是所有业务类型都要收集的。之后就像我说的,只要不执行cboContractType_SelectedIndexChanged事件,jquery代码就能够成功清空文本框或者填入数据,但是如果执行了,那么jquery代码就失效了。
解决方案五:
你贴代码还是不能跟问题本身结合起来。你可以在if($(this).val()
这里设置断点(在vs中调试),然后贴出第一次中断时调试this结果,以及第二次(UpdatePanel刷新之后)在中断时调试this的结果。
解决方案六:
你只是说“在网页中使用了updatepanel”,但是并没有准确说明它的范围。
解决方案七:
你将txtemail也放到UpdatePanel中
解决方案八:
<asp:DropDownListID="cboContractType"runat="server"AutoPostBack="True">没绑定事件每次选择只有回传
解决方案九:
你确定是jQ失效?浏览器明显报错了?没看懂你的问题不过可以尝试将$(this).val("")替换成$(this).text("")