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 相关文章推荐
jquery 模板的应用示例
Nov 12 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
Dec 27 Javascript
JavaScript中的console.time()函数详细介绍
Dec 29 Javascript
js实现字符串转日期格式的方法
May 20 Javascript
JQuery解析XML数据的几个简单实例
May 18 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
微信小程序实现页面跳转传值的方法
Oct 12 Javascript
Vue.js自定义指令学习使用详解
Oct 19 Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 Javascript
实例讲解JavaScript 计时事件
Jul 04 Javascript
JS实现数组去重的11种方法总结
Apr 04 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
JavaScript类的继承操作实例总结
2018/12/20 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
2014大学生学生会工作总结
2014/12/19 职场文书
产品调价通知函
2015/04/20 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
python执行js代码的方法
2021/05/13 Python