Почему сборщик 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)
{
... ... ..
}