日期时间选择器插件flatpickr

2,696 阅读4分钟

日期时间选择器插件flatpickr

flatpickr 是一款功能强大的纯 JS 扁平风格日期时间选择器[插件]该日期时间选择器支持移动手机,提供多种内置的[主题]效果,并且提供对中文的支持。它的特点还有:

使用 SVG 作为界面的图标

兼容 jQuery

支持对各种日期格式的解析

轻量级,高性能,压缩后的版本仅 6K 大小

对手机原生日期格式的支持

下图说明了使用 jQuery UI、Bootstrap、packadate.js 和 flatpickr 拉齐制作一个日期时间选择器时,所需要的文件尺寸大小:
强大纯JS扁平风格日期时间选择器插件下图是 flatpickr 日期时间选择器的各种主题效果:
强大纯JS扁平风格日期时间选择器插件

使用方法:

在页面中引入 flatpickr.css 和 flatpickr.js 文件。

  1. <link rel="stylesheet" type="text/css" href="/path/to/flatpickr.css">
    
  2. <script src="/path/to/flatpickr.js"></script>
    
    使用AMD规范或者ES6导入
  3. import flatpickr from 'flatpickr';
    require('flatpickr/dist/flatpickr.min.css')
    

HTML 结构:

一个最简单的日期时间选择器的 HTML 结构如下:

  1. <input id="flatpickr-tryme" placeholder="......">
    

初始化插件:

有多种方法可以实例化一个日期时间选择器。如下:

  1. // 通过class名称,返回一个数组
    
  2. document.getElementsByClassName("myClass").flatpickr({..config});
    
  3. // 通过ID
    
  4. document.getElementById("myID").flatpickr();
    
  5.  flatpickr.setDefaults({});// 可以设置一些全局配置项
    
  6. // 使用jQuery
    
  7. $(".calendar").flatpickr();
    

部分配置参数:

[详情请参照官网]Options - flatpickr

在配置参数中,所有的类型为 string 或 boolean 的参数都可以通过 data-属性在 HTML 标签中进行设置。例如:data-min-date、data-default-date、data-default-date 等。

参数类型默认值描述
altFormatstring"F j, Y"altInput 的日期格式。
altInputBooleanfalse是否使用某种用户友好的方式来显示日期时间。
altInputClassString""添加到 input 上的自定义 class 类。例如 bootstrap 用户可能需要添加一个form-control class。
allowInputbooleanfalse是否允许用户直接在输入框中输入日期。
clickOpensbooleantrue是否在点击输入框时打开日期时间选择界面。如果你想通过手动.open()方法来打开,该选项设置为false
dateFormatstring"Y-m-d"设置日期显示格式。
defaultDateString/Date Objectnull设置一个初始的日期。
disablearray[]被禁用的日期。
enableTimebooleanfalse是否启用时间选择。
enableSecondsbooleanfalse在时间选择器中是否可以选择秒。
noCalendarbooleanfalse是否隐藏日历。
hourIncrementinteger1小时输入框的步长。
minuteIncrementinteger5分钟输入框的步长。
inlinebooleanfalse是否以内联的方式显示日历。
staticbooleanfalse日期选择器位于包裹容器的位置。
wrapBooleanfalse包裹元素。
maxDateStringnull用户可以选择的最大日期。
minDateStringnull用户可以选择的最小日期。
onChangefunction(dateObject, dateString)null每次日期被选择的时候都触发该函数。
onOpenfunction(dateObject, dateString)null每次日历被打开时都会触发该函数。
onClosefunction(dateObject, dateString)null每次日历被关闭时都会触发该函数。
parseDatefunctionfalse接收一个日期字符串并返回一个日期对象。
shorthandCurrentMonthbooleanfalse以简写方式显示月份
weekNumbersbooleanfalse是否在日历中显示星期数。
time_24hrbooleanfalse是否以 24 小时格式来显示时间。
utcbooleanfalse如果为 true,日期将会被解析、格式化和显示为 UTC 格式。
prevArrowstring<向前箭头图标。
nextArrowstring向后箭头图标。

日期格式:

字符描述示例
d月份中的天数,如果不满 2 个数字的会前导 0。01 - 31
D一个星期中某一天的简写文本表示Mon - Sun
l(小写的 L)一个星期中某一天的文本表示Sunday - Saturday
j不带前导 0 的月份中的天数1 - 31
J带序号后缀,不带前导 0 的月份中的天数1st, 2nd, to 31st
w使用数字来代表星期中的某一天0 (星期天) - 6 (星期六)
F月份的完整文本表示January - December
m使用数字来表示月份,前导带 0。01 - 12
n使用数字来表示月份,前导不带 0。1 - 12
M月份的简写文本表示Jan - Dec
U时间戳1413704993
y两个数字代表的年99 or 03
Y4 个数字代表的年1999 or 2003

时间格式:

字符描述示例
H24 小时制00 to 23
h12 小时制1 to 12
i分钟00 to 59
S秒(不满 2 位数补 0)00 to 59
s0 - 59
KAM/PMAM or PM