jQuery和UpdatePanel兼容的问题

  今天老大分配了一个任务,将一个ascx页面中的dateCalendar换成jQuery中datePicker,我在添加了ID为dateCalendar文本框后,添加了如下的jQuery。

<script language="javascript">
    $(document).ready(function(){
        $("#<%=dateCalendar.ClientID %>").datepicker();
    });
</script>

  我在运行代码的时候,开始点击文本框,会弹出日历控件,但是,在操作了与Ajax相关的控件后(部分回发页面获取该网页的数据),UpdatePanel使页面部分更新后,点击日历文本框,日历控件就不会弹出来了。

对于这个问题,我在网上找到了解决方法。

  方法一:

<scriptlanguage="javascript">
      $(document).ready(function()
      {
             $("#<%=dateCalendar.ClientID %>").datepicker();
      }); 
      function pageLoad(sender, args)
      {
      if(args.get_isPartialLoad())
      {
             $("#<%=dateCalendar.ClientID %>").datepicker();
      }
}
</script>

  原理:上面的代码片断中添加了一个函数调用pageLoad的,在每次页面加载时、页面的部分或全部回传时激发。那么与Ajax相关的控件被点击时,pageLoad就会被激发。

方法二:

<scriptlanguage="javascript">
    function pageLoad(sender, args)
    {
           $("#<%=dateCalendar.ClientID %>").datepicker();
    }
</script>

  或:

<scriptlanguage="javascript">
    Sys.Application.add_load(FirejQuery);
    function FirejQuery()
    {
          $("#<%=dateCalendar.ClientID %>").datepicker();
    }
</script>

参考博文:

http://blog.163.com/renlee_1007/blog/static/225358620116203403011/