回发后jquery datepicker不起作用

Posted

技术标签:

【中文标题】回发后jquery datepicker不起作用【英文标题】:j-query date-picker does not work after post back 【发布时间】:2013-12-06 19:07:56 【问题描述】:

我有一个 j-query 日期选择器,在第一次回帖后不起作用。它仅在回发之前有效,但日期选择器在回发后不起作用。显示日期选择器的文本框用 ajax 更新面板包裹。这是我的 j 查询:

<script type="text/javascript">
    $().ready(function () 
        $('.date-picker').mousedown(function () 

            $('.date-picker').datepicker(
                changeMonth: true,
                changeYear: true,
                showButtonPanel: true,
                dateFormat: 'MM yy',
                onClose: function (dateText, inst) 
                    var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                    var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                    $(this).datepicker('setDate', new Date(year, month, 1));
                
            );
        );
    );
</script>
<style type="text/css">
.ui-datepicker-calendar 
    display: none;
    
</style>

【问题讨论】:

回发后你必须重新初始化 jQuery 【参考方案1】:

您的问题是,在部分回发时,当 UpdatePanel 导致回发时会发生这种情况,DOM 不会重新加载,因此您的 $().ready(function () 不会触发并连接日期选择器。这是 ASP.NET AJAX 陷阱之一。

解决此问题的一种方法是在PageRequestManager 通过UpdatePanel 执行部分回发时调用 JavaScript 函数,如下所示:

<script type="text/javascript">
    $().ready(function () 
        $('.date-picker').mousedown(function () 

            $('.date-picker').datepicker(
                changeMonth: true,
                changeYear: true,
                showButtonPanel: true,
                dateFormat: 'MM yy',
                onClose: function (dateText, inst) 
                    var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                    var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                    $(this).datepicker('setDate', new Date(year, month, 1));
                
            );
        );
    );

    var prm = Sys.WebForms.PageRequestManager.getInstance();

    prm.add_endRequest(function() 
        // Re-bind your jQuery objects here

    );
</script>

注意:这是 jQuery 和 ASP.NET AJAX 如果不进行一些调整就无法正常运行的地方之一。

【讨论】:

谢谢卡尔,我真的不太了解 jquery,但是当你说重新绑定你的 jquery 时你的意思是什么?谢谢

以上是关于回发后jquery datepicker不起作用的主要内容,如果未能解决你的问题,请参考以下文章

回发后我的 jQuery 代码不起作用

回发后多日期选择器不起作用

回发后更新面板中的jquery事件处理程序不起作用[重复]

回发后jQuery将DatePicker日期文本保留到文本框中

jQuery 验证插件。回发后errorLabelContainer不起作用

在 ASPX 中回发后按键不起作用