推荐三款日期选择插件(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 EasyUI tree增加搜索功能的实现方法
Apr 27 jQuery
jquery基于layui实现二级联动下拉选择(省份城市选择)
Jun 20 jQuery
jQuery实现拖动效果的实例代码
Jun 25 jQuery
JavaScript之事件委托实例(附原生js和jQuery代码)
Jul 22 jQuery
jQuery实现全选、反选和不选功能
Aug 16 jQuery
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 jQuery
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
Apr 10 jQuery
jQuery模拟html下拉多选框的原生实现方法示例
May 30 jQuery
Jquery实现获取子元素的方法分析
Aug 24 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
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
javascript时区函数介绍
2012/09/14 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
javascript 闭包详解
2015/07/02 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
在Django中创建动态视图的教程
2015/07/15 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python3人脸识别的两种方法
2019/04/25 Python
Python猜数字算法题详解
2020/03/01 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
酒店执行总经理岗位职责
2013/12/15 职场文书
在校生自我鉴定
2014/01/23 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
孔庙导游词
2015/02/04 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
python解析照片拍摄时间进行图片整理
2022/07/23 Python