我有一个更新面板,但它似乎是在更新后从我的一个输入中删除了一个类
这是第一次加载时的代码
<input type="text" class="txt1 hasDatepicker" id="txt1" name="txt1">
这是更新运行后的代码
<input type="text" class="txt1" id="txt1" name="txt1">
这是运行客户端的jQuery
$(function() {
$(".txt1").datepicker({ dateFormat: 'D d M yy' });
});
似乎只是在更新运行后删除hasDatepicker
类,这会导致问题。
为什么会这样做?
答案 0 :(得分:3)
jQuery ready事件只会在第一次加载页面时触发。它甚至没有检测到从jQuery本身调用的AJAX更新,因为该页面已经存在。
但是,在服务器上有一个类似于Page_Load的方法,如果它存在于JavaScript全局范围内,一旦页面加载就会调用它 - 在ASP.NET术语中,这是第一次或部分回发/异步更新之后/ ajax刷新。
该名称与JavaScript约定略有不同:
function pageLoad(){
$(".txt1").datepicker({ dateFormat: 'D d M yy' });
}
尝试并在评论中告诉我它是否有用......
另一个答案(获取脚本管理器引用,然后调用add_pageLoaded()
并传递函数)就像在服务器端执行this.Load += new ....
时在ServerSide中,而这个是Page_Load
版本(默认情况下启用事件连接)。当然我的意思是他们在客户端的对应不完全相同。所以,两者都很好,两者都应该有效,但如果你有多个加载事件处理程序,那么第二种方法会很有用,这会使事情变得更加复杂。
答案 1 :(得分:1)
您需要使用PageRequestManager,它需要页面上的ScriptManager。您可以将其声明为<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
,然后将PageRequestManager实例化为:
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(SomeFunction);
prm.add_pageLoaded(function() {});
function SomeFunction() {}
</script>