在.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. .className = "highlight";.setAttribute("class", "highlight");

    document.getElementById("top").innerHTML = newHTML; document.getElementById("contact& ...

  2. IT公司100题-8-智力题

    问题1: 有两个房间,一间房里有三盏灯,另一间房有控制着三盏灯的三个开关, 这两个房间是分割开的,从一间里不能看到另一间的情况. 现在要求受训者分别进这两房间一次,然后判断出这三盏灯分别是由哪个开关控 ...

  3. C++-bool的值

    /////////////////////////////////////////////////////////////////////////////// // // FileName : boo ...

  4. URAL 1158 AC自动机上的简单DP+大数

    题目大意 在一种语言中的字母表中有N(N<=50)个字母,每个单词都由M(M<=50)个字母构成,因此,一共可以形成N^M个单词.但是有P(P<=10)个串是被禁止的,也就是说,任何 ...

  5. Windows平台下的读写锁

    Windows平台下的读写锁简单介绍Windows平台下的读写锁以及实现.背景介绍Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initialize ...

  6. Google search

    filetype: active directory filetype: eg : lady gaga filetype:mp3 link: eg : link : supinfo.com(链接到su ...

  7. Vm下 linux与windowsxp文件共享的方法

    我的PC Operating System Host是Windows XP,Guest是Linux,virtualPC是VMware workstation.方法介绍大全请参见:Windows与Vmw ...

  8. MongoDB error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js(转)

    rror: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js 一般这种情况就是:自己指定的数据库,所以不能.自动加 ...

  9. Note_Master-Detail Application(iOS template)_05_ YJYMasterViewController.m

    //  YJYMasterViewController.m #import "YJYMasterViewController.h" #import "YJYDetailV ...

  10. 新浪微博sdk bug

    最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的时候被“坑”了,最后终于顺利的解决了.发现网上也有不少人遇到一样的问题,但是能找到的数量有限的解决办法写得都不详细,很难让人理 ...