我在网站上使用 UpdatePanels 时遇到重大问题。问题是,当我使用 ScriptManager 时,一旦更新面板回发,所有在最初加载页面时处于活动状态的客户端 JavaScript 都会丢失。
这就是我想要做的......
我在同一页面上有许多 .net 日历控件,每个控件都在其自己的更新面板中。日历最初是隐藏的,直到您在关联的文本框内(也在更新面板内)单击,此时日历会弹出,以便您选择日期。在您实际更改日期(回发)之前,它们的日历工作得很好,之后,当您在文本框中单击时,日历不再弹出,“onfocus” JavaScript 丢失。
在谷歌上看了几个小时之后,我可以通过向 TextBox 动态添加一个“onfocus”属性并在日历回发时使用 ScriptManager 注册启动脚本来让事情处于半工作状态。
例子:
TextBox1.Attributes.Add("onfocus", "document.getElementById('searchArrivalDateCalendarDiv').style.display = 'block';")
ScriptManager.RegisterStartupScript(Page, GetType(Page), "StopTxtClick", "$(document).ready(function(){$('.txtArrivalDate').click(function(event){event.stopPropagation(); $('div.searchArrivalDateCalendarDiv').show(); });});", True)
这似乎真的不切实际,尤其是当我介绍一个母版页时。我最终将不得不重新注册大量的启动脚本。
一定有更简单的方法吗?