为什么Jquery Datetime选取器在回发后丢失

Why Jquery Datetime picker is lost after postback?

本文关键字:Jquery Datetime 选取 为什么      更新时间:2023-09-26

我使用了Jquery DateTime选取器。它在第一页加载时工作良好,但在回发或单击任何按钮后停止工作。为什么?我不明白为什么?

头部:

<script>
    $(function () {
        $("#<%= txtBoxDateOfBirth.ClientID %>").datepicker();
    });
</script>

在asp.net的页面加载中:

StringBuilder scripts = new StringBuilder();
scripts.Append("<script type='text/javascript'>");
scripts.Append("$(function () {");
scripts.Append("$('txtBoxDateOfBirth')");
scripts.Append("});");
scripts.Append("</script>)");
Page.ClientScript.RegisterStartupScript(this.GetType(), txtBoxDateOfBirth.ClientID + "_ReadyScript", scripts.ToString());

但它仍然在任何按钮点击或回发时停止工作,为什么?

txtBoxDateOfBirth是否放置在UpdatePanel中?如果是,那么每次更新面板时都需要注册javascript。

应用程序代码中的js有什么意义?您只需将txtBoxDateOfBirth封装在一个jQuery对象中,并不对其执行任何操作

附带说明:Page.RegisterStartupScript已取消作用,您应该使用ClientScriptManager.Register StartupScript

我认为你应该这样写页面加载代码(不是在回发条件下):

protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder scripts = new StringBuilder();
        scripts.Append("<script type='text/javascript'>");
        scripts.Append("$(function () {");
        scripts.Append("$('txtBoxDateOfBirth').datepicker();");
        scripts.Append("});");
        scripts.Append("</script>)");
        Page.ClientScript.RegisterStartupScript(this.GetType(), txtBoxDateOfBirth.ClientID + "_ReadyScript", scripts.ToString());
    }

在页面中使用Load IsPostBack方法并将代码放入if condition 中

 if (!Page.IsPostBack)
 {
    ...  ...  .. 
 }