0

我使用这个 jquery datepicker

我在 updatePanel 中有输入

 <input id="DateMask" type="text" />

和js代码:

function SetD() {
    alert(1);
}

$(document).ready(function () {
    SetD();  
    $("#datepicker").datepicker({
        changeMonth: true,
        changeYear: true
    });
});

但问题是,当我将表单发布到服务器时,我只刷新更新面板,所以刷新$(document).ready(function ()后不起作用,所以我可以从哪里执行我的功能?

4

2 回答 2

2

您需要在 Sys.WebForms.PageRequestManager.add_endRequest 事件中重新绑定。看到这个类似的帖子jQuery $(document).ready 和 UpdatePanels?

于 2013-08-20T07:56:11.530 回答
1

要使其工作,您需要在 UpdatePanel 更新后重新初始化它。您可以通过使用 UpdatePanel 函数来做到这一点。我还想在这里指出,您还需要在 UpdatePanel 更新之前取消绑定它以避免内存泄漏。

<script type="text/javascript"> 
   // if you use jQuery, you can load them when dom is read.
   $(document).ready(function () {
       var prm = Sys.WebForms.PageRequestManager.getInstance();    
       prm.add_initializeRequest(InitializeRequest);
       prm.add_endRequest(EndRequest);

       // Place here the first init of the DatePicker
       InitDatePicker();
    });        

    function InitializeRequest(sender, args) {
       // make unbind to avoid memory leaks.
       $("#datepicker").unbind();
    }

    function EndRequest(sender, args) {
       // after update occur on UpdatePanel re-init the DatePicker
       InitDatePicker();
    }


    function InitDatePicker()
    {
        $("#datepicker").datepicker({
            changeMonth: true,
            changeYear: true
        });    
    }
</script>

几乎相同的问题,但在 GridView:Asp.Net UpdatePanel in Gridview Jquery DatePicker

于 2013-08-20T08:01:46.770 回答