Почему сборщик Jquery Datetime теряется после обратной передачи?

Я использовал Jquery DateTime Picker. Он отлично работает при первой загрузке страницы, но перестает работать после обратной передачи или любого нажатия кнопки. Зачем? Я не понимаю почему?

в голове:

<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());

но все равно он перестает работать при любом нажатии кнопки или обратной передаче, почему?

3 ответа

Я думаю, что вы должны написать свой код загрузки страницы следующим образом (не в условии обратной передачи):

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());
    }

Является txtBoxDateOfBirth помещен внутри UpdatePanel? если это так, JavaScript должен быть зарегистрирован каждый раз, когда панель обновляется.

Какой смысл JS в коде приложения? Вы просто оберните txtBoxDateOfBirth в объекте jQuery и ничего не делать с ним.

Примечание: Page.RegisterStartupScript не используется, вы должны использовать ClientScriptManager.RegisterStartupScript

Используйте на странице метод загрузки IsPostBack и поместите свой код внутрь, если условие

 if (!Page.IsPostBack)
 {
    ...  ...  .. 
 }
Другие вопросы по тегам