推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)


Posted in jQuery onApril 21, 2017

三款日期选择插件推荐给大家:

1.My97DatePicker

纯原生JS,专注于PC端,支持IE6+;页面上只需要引入WdatePicker.js文件,但是My97DatePicker整个目录是一个整体,最好不要破坏里面的目录结构,否则就会报错找不到指定文件。

(1)直接在html文件中写入

<input id="ipt" type="text" onclick="WdatePicker()" />

注意:由于此插件是原生JS写的,所以绑定点击事件请务必请用原生JS的点击事件绑定方法,如果使用$('#ipt').on('click',function( ){ }),在选中一个日期并失去焦点后,想要重新选择就必须点击两次次才能唤起日历。
(2)如果给输入框添加class="Wdate",输入框的右边会出现一个日期图标。
(3)可以通过其他元素来弹出日期选择框,直接给该元素添加onclick="WdatePicker({el: '#ipt'})"
(4)可以通过添加position属性来定义弹出位置,例如 onclick="WdatePicker({position: {left:100,top:50}})"
(5)可以通过添加dateFmt属性来定义日期格式,例如 onclick="WdatePicker({dateFmt: 'MM-yy'})"
(6)如果没有定义onpicked和oncleared事件,将自动触发文本框的onchange事件,定义这些事件的方式如下

document.getElementById('ipt').onclick = function(){
 WdatePicker({
  onpicked: function(){
   // 配合jquery.validate.js插件,在这里手动添加校验
  },
  oncleared: function(){
   // 配合jquery.validate.js插件,在这里手动添加校验
  },
 });    
}

(7)可以实现日期选择联动

<input id="d5221" type="text" onfocus="var d5222=$dp.$('d5222');WdatePicker({onpicked:function(){d5222.focus();},maxDate:'#F{$dp.$D(\'d5222\')}'})" />
<input id="d5222" type="text" onfocus="WdatePicker({minDate:'#F{$dp.$D(\'d5221\')}'})" />

(8)还能将选中的值拆分到文本框

<input type="text" id="d523_y" size="5" /> 年
<input type="text" id="d523_M" size="3" /> 月
<input type="text" id="d523_d" size="3" /> 日
<input type="text" id="d523_HH" size="3" /> 时
<input type="text" id="d523_mm" size="3" /> 分
<input type="text" id="d523_ss" size="3" /> 秒
<img onclick="WdatePicker({el:'d523',dateFmt:'yyyy-MM-dd HH:mm:ss',onpicked:pickedFunc})" src="../../My97DatePicker/skin/datePicker.gif" width="16" height="22" align="absmiddle" style="cursor:pointer" />

<script>
 function pickedFunc(){
  $dp.$('d523_y').value=$dp.cal.getP('y');
  $dp.$('d523_M').value=$dp.cal.getP('M');
  $dp.$('d523_d').value=$dp.cal.getP('d');
  $dp.$('d523_HH').value=$dp.cal.getP('H');
  $dp.$('d523_mm').value=$dp.cal.getP('m');
  $dp.$('d523_ss').value=$dp.cal.getP('s');
 }
</script>

更多功能和参数请去官网查询http://www.my97.net/dp/demo/resource/3.asp。 

2.jquery.datepicker.js

主要用于PC端,需要同时引入jquery.js和jquery-ui.js,样式方面除了引入jquery-ui.css,还要带上jquery-ui目录中的images文件夹,否则就会报错找不到指定的文件。

(1)引入相关文件后,直接就是$('#ipt').datepicker( );

(2)常用的几个参数配置如下

$("#ipt").datepicker({
 numberOfMonths:1, // 显示几个月 
 showButtonPanel:true, // 是否显示按钮面板 
 dateFormat: 'yy-mm-dd', // 日期格式 
 clearText:"清除", // 清除日期的按钮名称 
 closeText:"关闭", // 关闭选择框的按钮名称 
 yearSuffix: '年', // 年的后缀 
 showMonthAfterYear:true, // 是否把月放在年的后面 
 defaultDate:'2011-03-10', // 默认日期 
 minDate:'2011-03-05', // 最小日期 
 maxDate:'2011-03-20', // 最大日期 
 monthNames: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'], 
 dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], 
 dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], 
 dayNamesMin: ['日','一','二','三','四','五','六'], 
 onSelect: function(selectedDate) {
 // 选择日期后执行的操作 
 alert(selectedDate); 
 } 
});

3.Mobiscroll

专注于移动端,依赖于jquery类库,有多种样式可供选择,根据需要引入各类文件。

(1)demo如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
 <title>Mobiscroll日期时间插件</title>

 <!-- 核心CSS样式 -->
 <link href="dev/css/mobiscroll.core-2.5.2.css" rel="external nofollow" rel="stylesheet" type="text/css" />
 <!-- 添加动画效果 -->
 <!-- <link href="dev/css/mobiscroll.animation-2.5.2.css" rel="external nofollow" rel="stylesheet" type="text/css" /> -->
 <!-- 安卓样式 -->
 <link href="dev/css/mobiscroll.android-ics-2.5.2.css" rel="external nofollow" rel="stylesheet" type="text/css" />

 <!-- 或者引用一整个压缩好的css文件 -->
 <!-- <link href="css/mobiscroll.custom-2.5.2.min.css" rel="external nofollow" rel="stylesheet" type="text/css" /> -->

 <style type="text/css">
 .dwl{
  font-size: 20px;
 }
 .dwbg .dwb{
  font-size: 20px;
 }
 table td:first-child{
  padding-right: 15px;
 }
 table td:last-child{
  padding-left: 15px;
 }
 table .dww{
  min-width: 150px !important;
 }
 </style>
</head>

<body>
 <input type="text" name="appDate" id="appDate" />

 <!-- jquery类库 -->
 <script src="dev/jquery-1.9.1.js"></script>

 <!-- 核心js文件 -->
 <script src="dev/js/mobiscroll.core-2.5.2.js" type="text/javascript"></script>
 <!-- 添加中文 -->
 <!-- <script src="dev/js/mobiscroll.core-2.5.2-zh.js" type="text/javascript"></script> -->
 <!-- 针对日期时间 -->
 <script src="dev/js/mobiscroll.datetime-2.5.1.js" type="text/javascript"></script>
 <!-- 添加中文 -->
 <!-- <script src="dev/js/mobiscroll.datetime-2.5.1-zh.js" type="text/javascript"></script> -->
 <!-- 安卓端 -->
 <!-- <script src="dev/js/mobiscroll.android-ics-2.5.2.js" type="text/javascript"></script> -->

 <!-- 或者引用一整个压缩好的js文件 -->
 <!-- <script src="js/mobiscroll.custom-2.5.2.min.js" type="text/javascript"></script> -->

 <script type="text/javascript">
 $(function () {
  var currYear = (new Date()).getFullYear();
  var opt={};
  opt.date = {preset : 'date'};
  opt.default = {
  theme: 'android-ics light', // 皮肤样式
  display: 'bottom', // 显示方式
  mode: 'scroller', // 日期选择模式
  startYear: currYear , //开始年份
  endYear: currYear + 30, //结束年份
  dateFormat: 'mm/yyyy ', // 日期格式
  dateOrder: 'mmyy', // 面板中日期排列格
  setText: '确定', // 确认按钮名称
   cancelText: '取消',// 取消按钮名籍我
  monthText: '月', // 面板中月文字
  yearText: '年', // 面板中年文字
  };

  $("#appDate").val('').scroller('destroy').scroller($.extend(opt['date'], opt['default']));
 });
 </script>
</body>
</html>

(2)解决与移动端软键盘的定位冲突

如果页面有多个输入框,当点击一个输入框时会唤起设备自带的软键盘,然后如果直接点击另一个id名为appDate的日期输入框,即失去焦点的同时,获取到了mobiscroll绑定的输入框的焦点,结果发现之前的软键盘下沉消失之后,本该显示在底部的日期选择部件显示在了屏幕的上方,解决办法是找到mobiscroll.core-2.5.2.js 这个文件,搜索focus关键字,将对应的地方改成:

elm.bind('focus.dw', function () {
 setTimeout(function(){
  that.show();
 },300) 
});

其中300ms就是设置的延迟时间,这样以来再做相同的操作,就是等之前的软键盘下沉消失之后从底部浮上显示日期选择部件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery实现简单漂亮的Nav导航菜单效果
Mar 29 jQuery
jQuery validata插件实现方法
Jun 25 jQuery
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 jQuery
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
jQuery+CSS实现的table表格行列转置功能示例
Jan 08 jQuery
jQuery实现的电子时钟效果完整示例
Apr 28 jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
Feb 14 jQuery
jQuery实现的隔行变色功能【案例】
Feb 18 jQuery
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
jQuery实现查看图片功能
Dec 01 jQuery
jquery中$.fn和图片滚动效果实现的必备知识总结
Apr 21 #jQuery
jQuery+pjax简单示例汇总
Apr 21 #jQuery
基于jQuery实现文字打印动态效果
Apr 21 #jQuery
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 #jQuery
jquery将标签元素的高设为屏幕的百分比
Apr 19 #jQuery
jQuery Plupload上传插件的使用
Apr 19 #jQuery
jQuery ajax请求struts action实现异步刷新
Apr 19 #jQuery
You might like
基于mysql的论坛(2)
2006/10/09 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
PHP 异步执行方法,模拟多线程的应用分析
2013/06/03 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
Python中的各种装饰器详解
2015/04/11 Python
Python3读取zip文件信息的方法
2015/05/22 Python
python实现批量图片格式转换
2020/06/16 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
英国鞋网:Rubber Sole
2020/03/03 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
党课学习思想汇报
2014/01/02 职场文书
购房意向书范本
2014/04/01 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android