jquery UI Datepicker时间控件的使用及问题解决


Posted in Javascript onApril 28, 2016

本文实例为大家分享了jqueryUI中datepicker的使用,解决与asp.net中的UpdatePanel联合使用时的失效问题。

1.jqueryUI的datepicker的使用

-->首先在jqueryUI官网上根据你的需要下载适合你系统主题的样式,jqueryUI主题:下载地址;

jquery UI Datepicker时间控件的使用及问题解决

-->下载后的文件
jquery-ui-1.10.3.custom文件夹;不同的主题的区别在于它们引用的css不同
默认下载的样式如下:

 jquery UI Datepicker时间控件的使用及问题解决

其它样式比如我下载的样式:

jquery UI Datepicker时间控件的使用及问题解决

下载的jqueryUI中除了css文件夹不同,其它文件均相同

-->页面中的使用datePicker的步骤
(1)引入jquery-ui-1.10.3.custom.min.css样式文件
(2)引入jquery-1.9.1.js和jquery-ui-1.10.3.custom.min.js脚本文件;注意:先引入jquery文件

(3)我的需求是制作一个起始时间和一个终止时间的选择。

代码如下:

<script type="text/javascript">
    $(function () {
      $("#txtStartDate").datepicker({
        dateFormat: "yy-mm-dd",
        changeMonth: true,
        onClose: function (selectedDate) {
          $("#txtEndDate").datepicker("option", "minDate", selectedDate);
        }
      });
      $("#txtEndDate").datepicker({
        dateFormat: "yy-mm-dd",
        changeMonth: true,
        onClose: function (selectedDate) {
          $("#txtStartDate").datepicker("option", "maxDate", selectedDate);
        }
      });
      $("#ui-datepicker-div").css("font-size", "12px"); //改变大小
    });
  </script>
</head>
<body>
  <label for="from">开始时间:</label>
  <input type="text" id="txtStartDate" name="from"/>
  <label for="to">结束时间:</label>
  <input type="text" id="txtEndDate" name="to"/>
</body>

 注:

(1)$("#ui-datepicker-div").css("font-size", "12px"); 用来改变日期控件的大小
(2)dateFormat: "yy-mm-dd",改变日期格式

(3)日期控件为英文版本,加入一段脚本将其汉化

/* Chinese initialisation for the jQuery UI date picker plugin. */
/* Written by Cloudream (cloudream@gmail.com). */
jQuery(function ($) {
  $.datepicker.regional['zh-CN'] = {
    closeText: '关闭',
    prevText: '<上月',
    nextText: '下月>',
    currentText: '今天',
    monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',
        '七月', '八月', '九月', '十月', '十一月', '十二月'],
    monthNamesShort: ['一', '二', '三', '四', '五', '六',
        '七', '八', '九', '十', '十一', '十二'],
    dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
    dayNamesShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
    dayNamesMin: ['日', '一', '二', '三', '四', '五', '六'],
    weekHeader: '周',
    dateFormat: 'yy-mm-dd',
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: true,
    yearSuffix: '年'
  };
  $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
});

(4)对于一些datepicker的属性和方法的详细使用,可以参考其API文档,上面讲的很详细

 -->再分享一招 

 $("[id$=txtASN]")的使用

定义好的asp.net的textbox控件id为txtASN,但是$("#txtASN")却获取不到textbox的dom元素了,原因查看源代码后发现是其控件ID发生了变化,如果控件放在了panel中或者母版中,生成的html控件input ID就会发生变化,如pnlBaseInfo_txtASN
解决办法: $("[id$=txtASN]"),其意义就是在于获得id以txtASN结尾的dom元素

-->完成效果

jquery UI Datepicker时间控件的使用及问题解决

2.解决与asp.net中的UpdatePanel联合使用时的失效问题
问题:运行之后,点击"查询",页面局部刷新,发现日历选择器不出来了
DatePicker在asp.net的UpdatePanel中异步回传后失效的问题
在页面第一次加载时可以正常显示DatePicker控件,但在点击查询后,由于异步回传,DatePicker就失效了。
-->分析UpdatePanel
UpdatePanel在应用中主要用于局部刷新,避免整个页面的Postback。 
UpdatePanel实现局部刷新的核心在于MicrosoftAjaxWebForm.js文件,它的局部刷新过程就是将页面提交到服务端(包 含ViewState),执行服务端代码后异步将在UpdatePanel内的HTML进行重新呈现。 

-->分析jQuery
因为在UpdatePanel局部刷新之后,其中的文本框元素被重写,而此时整个DOM树并没有重新加载,所以jQuery的ready事件并没有触 发,所以文本框元素就失去了原有的特效。
-->解决方法
将初始化DatePicker的代码放在Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function(evt, args) {});

$(function () {
  Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function (evt, args) {
    $("[id$=txtStartDate]").datepicker({
      dateFormat: "yy-mm-dd",
      changeMonth: true,
      onClose: function (selectedDate) {
        $("[id$=txtEndDate]").datepicker("option", "minDate", selectedDate);
      }
    });
    $("[id$=txtEndDate]").datepicker({
      dateFormat: "yy-mm-dd",
      changeMonth: true,
      onClose: function (selectedDate) {
        $("[id$=txtStartDate]").datepicker("option", "maxDate", selectedDate);
      }
    });
    $("#ui-datepicker-div").css("font-size", "14px"); //改变大小
  });
});

大家还可以参考以下文章进行学习:

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
情人节之礼 js项链效果
Feb 13 Javascript
jQuery模拟超链接点击效果代码
Apr 21 Javascript
js图片延迟技术一般的思路与示例
Mar 20 Javascript
玩转方法:call和apply
May 08 Javascript
AngularJS的内置过滤器详解
May 14 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
Jun 21 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 Javascript
简单的Vue SSR的示例代码
Jan 12 Javascript
webpack 动态批量加载文件的实现方法
Mar 19 Javascript
Javascript数组及类数组相关原理详解
Oct 29 Javascript
JavaScript函数柯里化
Nov 07 Javascript
jquery弹出遮掩层效果【附实例代码】
Apr 28 #Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 #Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 #Javascript
JavaScript String 对象常用方法总结
Apr 28 #Javascript
JavaScript Math 对象常用方法总结
Apr 28 #Javascript
非常漂亮的相册集 使用jquery制作相册集
Apr 28 #Javascript
jQuery事件绑定on()与弹窗实现代码
Apr 28 #Javascript
You might like
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
浅析php工厂模式
2014/11/25 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
Python实例之wxpython中Frame使用方法
2014/06/09 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
利用Python优雅的登录校园网
2020/10/21 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
会计应届生的自荐信
2013/12/13 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
社区志愿者培训方案
2014/06/10 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis