ASP WebForms在回发后重新评估属性

时间:2013-12-05 08:41:06

标签: javascript jquery asp.net webforms

基本上我想在jQuery日历上设置默认日期。我有一个小脚本在页面加载时运行良好。

<script type="text/javascript">
    $(function () {

        var calendarPicker = $('input[name="ctl00$MainContent$ucDetails$LeftPanel$fieldDate$dateValue$calendarPicker"]');

        if (calendarPicker.val() == "") {
            calendarPicker.datepicker("option", "defaultDate", '<%# CalendarDefaultDate %>');
        }
    });
</script>

但是,当用户更改组合框上的值时,页面会回发并运行一些代码,这会导致CalendarDefaultDate的值更新。问题是即使属性的值已经改变,它也不会反映在页面上。

任何想法如何解决这个问题?非常感谢。

更新1.按照建议使用ClientScriptManager进行尝试。 (没有快乐)

        StringBuilder builder = new StringBuilder();
        builder.AppendLine("$(function(){var calendarPicker = $(\"input[name='ctl00$MainContent$ucDetails$LeftPanel$fieldDate$dateValue$calendarPicker']\")");
        builder.AppendLine("if (calendarPicker.val() == '') {");
        builder.AppendLine("calendarPicker.datepicker(\"option\", \"defaultDate\", '" + CalendarDefaultDate + "')");
        builder.AppendLine("}});");

        Page.ClientScript.RegisterStartupScript(GetType(), "CalenderDefaultDate", builder.ToString(), true);

1 个答案:

答案 0 :(得分:0)

您可以使用ClientScriptManager在重新加载时运行您的函数:

ClientScriptManager.RegisterStartupScript(this.GetType(), "AKey", "MyFunction();", true);

http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx

尝试以这种方式在aspx文件上声明你的函数。

<script type="text/javascript">
    function assignCalendar () {

        var calendarPicker = $('input[name="ctl00$MainContent$ucDetails$LeftPanel$fieldDate$dateValue$calendarPicker"]');

        if (calendarPicker.val() == "") {
            calendarPicker.datepicker("option", "defaultDate", '<%# CalendarDefaultDate %>');
        }
    };
</script>

然后在代码后面调用它如下:

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "assignCalendar ", "<script type='text/javascript'>assignCalendar();</script>", false);

如果你把它放在PageLoad事件上,我认为它会起作用