在.NET中使用了UpdatePanel,里面的输入框使用了jQuery的日历选择器,接下来介绍下两者同时使用的一些细节及问题的解决方法,感兴趣的各位可以参考下哈
今天,在.NET中使用了UpdatePanel,里面的输入框使用了jQuery的日历选择器: 
 
<script type="text/javascript"> 
$(function(){ 
$("#ctl00_ContentPlaceHolder1_txtDateFrom").datepicker({ 
inline: true, 
dayNamesMin:["日","一","二","三","四","五","六"],//区域化周名为中文 
firstDay:1,//每周从周一开始 
//区域化月名为中文习惯 monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"], 
showMonthAfterYear:true,//月份显示在年后面 
yearSuffix:"年",//年份后缀字符 
changeYear:true, 
changeMonth:true, 
showButtonPanel:true,//显示按钮面板 
currentText:"今天",//当前日期按钮上的文本 
closeText:"关闭",//关闭按钮上的文本 
dateFormat:"yy-mm-dd" 
}); 

</script>  
 

分析1:UpdatePanel 
UpdatePanel在应用中主要用于局部刷新,避免整个页面的Postback。 
UpdatePanel实现局部刷新的核心在于MicrosoftAjaxWebForm.js文件,它的局部刷新过程就是将页面提交到服务端(包 含ViewState),执行服务端代码后异步将在UpdatePanel内的HTML进行重新呈现。 
在此过程中,页面的其它部分并没有状态更改。 
分析2:jQuery 
jQuery可以通过简单的代码对 HTML元素添加各种属性和事件句柄,我们可以在这里看到官方的文档: 
Tutorials:How jQuery Works 
http://docs.jquery.com/How_jQuery_Works 
在这里,我们可以得知,jQuery有个重要的事件标记“ready”,一般 对HTML元素的效果和事件句柄都通过这个ready事件来添加,如下: 
$(document).ready(function () { 
$("p").text("The DOM is now loaded and can be manipulated."); 
}); 
官方对此的说明是:ready事件会在DOM完全加载后运行一次,OK,至此,问题的原因差不多明白了: 
原因: 
因为在UpdatePanel局部刷新之后,其中的文本框元素被重写,而此时整个DOM树并没有重新加载,所以jQuery的ready事件并没有触 发,所以文本框元素就失去了原有的特效。 
解决方案: 
我们可以将ready事件中执行的代码提取出来:

<script type="text/javascript"> 
function showdatepicker(){ 
$("#ctl00_ContentPlaceHolder1_txtDateFrom").datepicker({ 
inline: true, 
dayNamesMin:["日","一","二","三","四","五","六"],//区域化周名为中文 
firstDay:1,//每周从周一开始 
//区域化月名为中文习惯 monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"], 
showMonthAfterYear:true,//月份显示在年后面 
yearSuffix:"年",//年份后缀字符 
changeYear:true, 
changeMonth:true, 
showButtonPanel:true,//显示按钮面板 
currentText:"今天",//当前日期按钮上的文本 
closeText:"关闭",//关闭按钮上的文本 
dateFormat:"yy-mm-dd" 
}); 

</script> 

在jQuery中也放入这个函数

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

然后通过捕获ScriptManager的EndRequest事件,在每次 UpdatePanel局部刷新之后执行一次jQuery初始化代码,如下所示:

<script type="text/javascript"> 
function load(){ 
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 

function EndRequestHandler() { 
showdatepicker(); 

</script> 

最后,再在<body>中加上load()函数,即:

<body onload="load()"> 

这样,即便UpdatePanel局部刷新,jQuery代码也能执行。

UpdatePanel与$.function()同时使用问题的更多相关文章

  1. ASP.NET 前台Javascript调用后台代码 / 后台调用前台Javascript

    1:ASP.NET 前台Javascript调用后台代码 1.1:前台Javascript <script> function CallCs() { var str = "< ...

  2. 通过百度echarts实现数据图表展示功能

    现在我们在工作中,在开发中都会或多或少的用到图表统计数据显示给用户.通过图表可以很直观的,直接的将数据呈现出来.这里我就介绍说一下利用百度开源的echarts图表技术实现的具体功能. 1.对于不太理解 ...

  3. ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘

    开篇:经历了上一篇<aspx与服务器控件探秘>后,我们了解了aspx和服务器控件背后的故事.这篇我们开始走进WebForm状态保持的一大法宝—ViewState,对其刨根究底一下.然后,再 ...

  4. 使用脚本操作UpdatePanel中控件的问题

    假设有一个脚本(用js或者jQuery等类似手段编写),为UpdatePanel中的一个普通的TextBox赋值.如果你以为这样写: <head runat="server" ...

  5. jQuery AutoComplete在AJAX UpdatePanel环境中PostBack之后无法工作

    前些日子,Insus.NET有实现<ASP.NET MVC使用jQuery实现Autocomplete>http://www.cnblogs.com/insus/p/5638895.htm ...

  6. ASP.NET后台输出js大全,页面顶部、form表单中前面与后面、和UpdatePanel(ScriptManager、AJAX)输出JS

    Response.Write 与   Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptB ...

  7. UpdatePanel完成后调用js

    引言: asp.net 微软引入了UpdatePanel 使用起来很方便 如果 我们想UpdatePanel加载完成后做一些事情 需要使用js <script type="text/j ...

  8. 在updatepanel使用colorbox无效

    今天在给一个使用colorbox的页面加了一个updatepanel后,colorbox无效了,原因是以前的页面初始化colorbox是用 $(document).ready(function(){ ...

  9. JQuery:通过noConflict()方法同时使用jQuery 和其他框架

    jQuery - noConflict()方法 一.如何在页面上同时使用 jQuery 和其他框架?jQuery 和其他 JavaScript 框架正如您已经了解到的,jQuery 使用 $ 符号作为 ...

随机推荐

  1. [转载]Android View.onMeasure方法的理解

    2013-12-18 10:56:28 转载自http://blog.sina.com.cn/s/blog_61fbf8d10100zzoy.html View在屏幕上显示出来要先经过measure( ...

  2. Android 移动缩放的ImageView

    今天介绍一下Android中怎么实现ImageView的缩放和移动,自定义TouchImageView. public class TouchImageView extends ImageView { ...

  3. C/C++文件结构

    总结者:kate (1).h 为头文件:存放 版权和版本声明,预处理块 ,函数和类结构声明 (2).cpp文件:代码文件,存放程序的实现 大都数时候,源文件和头文件是对应出现的,比如有一个A.cpp  ...

  4. CSS 的class属性居然可以并(有点像并,有点像与)操作

    <a href="javascript:;" class="btn btn-default doc-event-1">创建div容器</a&g ...

  5. 一篇很好介绍stringBuffer和StringBuilder的区别--来自百度

    ava.lang.StringBuffer线程安全的可变字符序列.一个类似于 String 的字符串缓冲区,但不能修改.虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的 ...

  6. apache http client vs urlconnection

    Google has deprecated HttpClient Choose an HTTP Client Most network-connected Android apps use HTTP ...

  7. mysql innoDB 与 myISAM

    转载文章 出处  http://www.pureweber.com/article/myisam-vs-innodb/ 使用MySQL当然会接触到MySQL的存储引擎,在新建数据库和新建数据表的时候都 ...

  8. paramiko堡垒机、线程及锁

    1.使用paramiko实现ssh连接和scp拷贝 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 1.1 SSHClient 用于连接远 ...

  9. Android Toast效果

    Android Toast效果是一种提醒方式,在程序中使用一些短小的信息通知用户,过一会儿会自动消失,实现如下: FirstActivity.java package org.elvalad.acti ...

  10. 评价软件_搜狗输入法(pc端)

    一.用户界面 用户在初次下载后,会有一个非常简洁的界面,如图: