Zebra_Datepicker

zebrajs

斑马Datepicker  鸣叫

一个超轻量级,高度可配置的跨浏览器日期/时间选择器jQuery插件

NPM 总 每月一次 JSDelivr 执照

Zebra_Datepicker是一个小而高度可配置的日期选择器/时间选择器jQuery插件,旨在通过向它们添加日期/时间选择器功能来丰富表单。这个jQuery插件会自动将一个日历图标添加到指示的输入字段,单击该字段时,将打开附加的日期选择器。由于日期选择器的直观界面,用户可以轻松地在数月和数年之间跳转。所选日期将使用所选日期格式输入到输入字段中,可在日期选择器选项中进行配置。

特征

  • 它很小 - 它的重量约为30KB(压缩9.1KB),提供每个字节的最佳功能比
  • 它既是日期选择器,也是时间选择器
  • 它是跨浏览器 - 适用于所有主流浏览器; 也适用于Internet Explorer 6!
  • 有一个默认的配色方案,几乎可以与任何设计融为一体,并且可以通过组织良好的CSS文件轻松定制; 包括两个额外的主题,其中一个用于Twitter Bootstrap
  • 提供直观的界面,可以轻松导航数月和数年
  • 提供了一种直观的机制,可以使用类似于cron语法的语法来禁用日期和日期范围
  • 支持为周六和周日没有周末的国家定义自定义周末日
  • 支持大多数你能想到的日期格式,借用PHP日期函数的语法
  • 支持开始和结束日期的各种组合
  • 日期选择器可以“配对” - 其中一个或多个日期选择器将使用另一个日期选择器的值作为开始日期
  • 支持国际化
  • 通过自动将小日历图标附加到指示的输入字段来工作,该字段在单击时显示附加的日期选择器。
  • 它与AMD和CommonJS兼容

主题

演示

演示

要求

Zebra Datepicker没有jQuery 1.7.0+以外的依赖项,并要求您使用该插件的页面具有严格的doctype,如:

<!doctype  html >

安装

Zebra Datepicker以npm包的形式提供。要安装它,请使用:

 “--save”参数将该插件添加为packages.json中的依赖项 
npm install zebra_datepicker --save

Zebra Datepicker也可作为Bower包提供。要安装它,请使用:

 “--save”参数将插件添加为bower.json中的依赖项 
bower install zebra_datepicker --save

如何使用

首先,从CDN加载jQuery并提供对本地源的回退,如:

< script  src =  https://code.jquery.com/jquery-3.3.1.min.js  > < / script >
< script > 窗口jQuery  ||  文件write' <script src =“path / to / jquery-3.3.1.js”> < \ / script> '< / script >

加载Zebra Datepicker jQuery插件:

< script  src =  path / to / zebra_datepicker.min.js  > < / script >

或者,您可以从JSDelivr CDN加载Zebra Datepicker,如下所示:

<! -对于最新版本,不建议在生产中使用- > 
< script 
  src = https://cdn.jsdelivr.net/npm/zebra_datepicker@latest/dist/zebra_datepicker.min.js  > < / script >

<! -对于特定版本- > 
< script 
  src = https://cdn.jsdelivr.net/npm/zebra_datepicker@1.9.6/dist/zebra_datepicker.min.js  > < / script >

<! -用“src”替换“min”将为您提供非压缩版本- >

从本地源加载样式表文件

< link  rel =  stylesheet   href =  path / to / theme / zebra_datepicker.min.css  >

……或者来自JSDelivr CDN

<! -最新版本的“默认”主题- > 
< link 
  rel = stylesheet 
   href = https://cdn.jsdelivr.net/npm/zebra_datepicker@latest/dist/css/default/ zebra_datepicker.min.css  >

<! -最新版本的“bootstrap”主题- > 
< link 
  rel = stylesheet 
   href = https://cdn.jsdelivr.net/npm/zebra_datepicker@latest/dist/css/bootstrap/ zebra_datepicker.min.css  >

<! -用“src”替换“min”将为您提供非压缩版本- >

Zebra Datepicker也可用于cdnjs,这是最着名的免费和公共Web前端CDN服务之一

现在,在DOM-ready事件中,将Zebra Datepicker插件附加到<input type="text">控件

$文件)。readyfunction(){

    //假设您想要附加插件的控件
    //使用“datepicker”类设置
    $ ' input.datepicker ')。Zebra_DatePicker();

});

这将附加日历和指定的元素。单击该图标将使日期选择器可见。

要获得对附加到元素的Zebra DatePicker实例的引用,请执行以下操作:

var datepicker =  $' selector ')。数据' Zebra_DatePicker ');

配置选项

属性

所有参数都是可选的。

请注意,下面的任何属性也可以通过数据属性设置。要执行此操作,您必须使用要设置的属性的名称作为前缀data-zdp_。需要记住的一件重要事情是,如果属性的值是一个数组,则必须在方括号内使用双引号,因此在属性周围使用单引号。见例子

属性类型默认描述
always_visiblefalse 日期选择器应该始终可见吗?
将此属性设置为jQuery元素将导致日期选择器始终可见,指示的元素充当日期选择器的容器;

将此属性设置为boolean true将导致日期选择器在选择日期时不关闭,但仅在用户在日期选择器外部单击时才会关闭。
容器jQuery的$('body') 默认情况下,日期选择器被注入文档的<body>元素中; 使用此属性告诉库将日期选择器注入自定义元素 - 当您希望日期选择器在特定位置打开时非常有用。
custom_classes排列false 应该有自定义类的日期。


{
'myclass1': [dates_to_apply_the_custom_class_to],
'myclass2': [dates_to_apply_the_custom_class_to]
}

… 形式的对象,其中dates_to_apply_the_custom_class_to是与disabled_dates属性所需格式相同的日期数组。

自定义类适用于日期选择器视图,而不适用于月/年视图!另请注意,如果禁用了应用类的日期,则类名将添加“_disabled”后缀。

为了应用自定义类中的样式,请确保使用以下语法:

.Zebra_DatePicker .dp_daypicker td.myclass1 { .. }
.Zebra_DatePicker .dp_daypicker td.myclass1_disabled { .. }
排列['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] 星期日到星期六的星期几。
days_abbrfalse 天数的缩写名称。

默认情况下,一天的缩写名称包含当天全名的前两个字母。虽然这在大多数语言中都很常见,但对于泰语,Loa,缅甸等语言也有例外,这是不正确的。对于这些情况,请指定一个数组,其中包含用于一周中7天的缩写; 让它false使用一天名字的前两个字母作为缩写。
DEFAULT_POSITION'above' 日期选择器相对于其所连接元素的位置。

请注意,无论此设置如何,如果需要,日期选择器的位置将自动调整以适合视口。

可能的值是abovebelow

此属性将如果被忽略 always_visiblecontainer 属性都设置!
方向0日历的方向

  • n(正整数)从参考日期1之后的n天开始创建仅限日期的日历
  • -n (负整数)创建在参考日期前n天结束的仅过去日历
  • 0 创建一个没有限制的日历
  • boolean true创建以参考日期开始的仅限日期的日历
  • boolean false表示在参考日期结束的仅过去日历
您还可以将此属性设置为包含以下组合中的两个元素的数组:

  • 第一项是布尔值true(日历从参考日期开始),a positive integer(日历在参考日期后n天开始),或者以属性valid date定义的格式给定format(日历从指定日期开始),第二项是布尔值false(日历没有结束日期),a positive integer(日历在开始日期后n天结束),或者以属性valid date定义的格式给出,format并且出现在开始日期之后(日历在指定日期结束)

  • 第一项是布尔值false(日历在参考日期结束),a negative integer(日历在参考日期前n天结束),或者以属性valid date定义的格式给定format(日历在指定日期结束),第二项是positive integer(日历在结束日期前n天结束),或者以属性valid date定义的格式给出,format并且出现在开始日期之前(日历从指定日期开始)
示例:

[1, 7]日历从明天
[true, 7]开始,在该日历从参考日期开始后七天结束,并在该
['2013-01-01', false]日历从2013年1月1日开始后七天结束,并且没有结束日期(“格式”为YYYY-MM-DD)
[false, '2012-01-01']日历结束于参考日期并于2012年1月1日开始(“格式”为YYYY-MM-DD)

请注意,该 disabled_dates 物业仍然适用!

reference date 是当前日期除非日期选择器是 pair 的另一个日期选取器,情况,其中,基准日期是在该日期选择器选择的日期。
disable_time_picker布尔false默认情况下,设置的格式,还包括时间(hHgGisaA)会自动启用时间选择器。如果要使用涉及时间但不需要时间选择器的格式,请将此属性设置为true
disabled_datesfalse
没有禁用日期
一系列禁用日期,格式如下:'day month year weekday'其中工作日是可选的,可以是0-6(星期六到星期日)。

语法类似于cron的语法:值由空格分隔,可能包含*(星号)-(破折号)和,(逗号)分隔符。

例如:

['1 1 2012']将禁止2012年1月1,
['* 1 2012']将禁止在2012年1月所有天数
['1-10 1 2012']将通过在2012年10禁用1月1日
['1,10 1 2012']将在2012年禁用1月1日和10
['1-10,20,22,24 1-3 *']将通过10停用1,再加上每年的22月和1月24日到三月
['* * * 0,6']会禁用所有星期六和星期日
['01 07 2012', '02 07 2012', '* 08 2012'] 将禁用2012年7月1日和2日以及2012年8月的所有活动

禁用所有日期,而不是指定至少一个启用日期将把脚本发送到一个无限循环搜索一个有效的日期显示!
enabled_datesfalse
所有日期已启用
一系列已启用的日期,格式与disabled_dates属性所需的格式相同。要与disabled_dates属性一起使用,首先将disabled_dates属性设置为类似[* * * *] (将禁用所有内容)并将enabled_dates属性设置为,例如,[* * * 0,6]仅启用周末。
enabled_hoursfalse
所有时间都是可选择的
一系列可选择的小时数。

只有当有道理format:包含下列字符之一HGhg。当包含或字符时,有效值介于0-24(未填充0!)之间,有效值介于(不填充!)时包含或字符。formatHG1-120formathg
enabled_minutesfalse
所有分钟都可以选择
一系列可选分钟。

仅在format包含i角色时才有意义。有效值介于0-59(未填充0!)之间
enabled_secondsfalse
所有秒都可以选择
一系列可选秒。

仅在format包含s角色时才有意义。有效值介于0-59(未填充0!)之间
FIRST_DAY_OF_WEEK整数1
星期一
周的开始日。
有效值是06,周日到周六。
格式'Y-m-d' 返回日期的格式。

接受日期格式下列字符:dDjlNwSFmMnYyhHgGisaA,从PHP的借用语法日期功能。

如果format属性包含时间相关的字符(gGhHisaA),时间选择器将自动启用。

如果要使用涉及时间但不需要时间选择器的格式,请将该 disable_time_picker 属性设置为true。
请注意,设置无天的日期格式时(dj),用户将能够选择只有年和月,并设置无月日(格式时FmMntdj),用户将能够选择只有几年。同样,设置仅包含与时间相关的字符的格式将导致用户只能选择时间。

另请注意,view如果是这种情况,则可以覆盖属性的值(即,如果日期格式不允许选择天数days,则view属性的值无效)。
header_captions目的 header_captions: {
days: 'F, Y',
months: 'Y',
years: 'Y1 - Y2'
}
字幕在日期选择器的头,对于3周可能的观点:daysmonthsyears

对于每一个3次以下特殊字符可以从PHP的使用借用日期功能的语法:mnFMyY; 其中任何一个都将在运行时替换为适当的日期片段,具体取决于当前查看的日期。还有两个特殊字符Y1Y2(大写字母代表4位数字,小写字母代表2位数字)代表currently selected year - 7currently selected year + 4仅在years视图中使用的字符。

尽管这些特殊字符,可以在任何的3次使用,你应该使用mnFMdays观点和yYY1Y2y1y2monthsyears看法,或者你可能会得到意想不到的效果!

也可以使用文本和HTML,并且将按原样呈现,如下例所示(该库足够智能,在单词或HTML标记中使用时不能替换特殊字符):

header_captions: {
    days: 'Departure:<br>F, Y',
    months: 'Departure:<br>Y',
    years: 'Departure:<br>Y1 - Y2'
}

icon_marginfalse 图标周围的左右白色空间

如果inside属性设置为true,则会更改目标元素的填充,以便元素的左边或右边填充(取决于值icon_position)将2 x icon_margin加上图标的宽度。

如果inside属性设置为false,则这将是元素和图标之间的距离。

保留它以false使用元素的现有填充
icon_position'right' 图标的位置。
接受的值是leftright
布尔true 打开日期选择器的图标是否应该在元素内?

如果设置为false,则图标将放置在父元素的右侧,而如果设置为true,则将放置在父元素的右侧,但元素本身 内部
lang_clear_date'Clear'清除按钮 的标题。
个月排列['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], 月份名称
months_abbrfalse 月份的缩写名称。

默认情况下,月份的缩写名称包含月份全名的前3个字母。虽然这在大多数语言中都很常见,但对于泰语,Loa,缅甸等语言也有例外,这是不正确的。对于这些情况,请指定一个数组,其中包含一年中所用月份的缩写; 让它false使用一个月的名字的前3个字母作为缩写。
导航排列navigation: ['&#9664;', '&#9654;', '&#9650;', '&#9660;'] 按顺序用于上一个/下一个和上/下按钮的HTML。
抵消排列[5, -5]以像素(x,y)为单位的偏移量,用于移动日期选择器相对于图标右上角的位置,以切换日期选择器,或者,如果图标被禁用,则相对于元素的右上角,插件附加到。

请注意,这仅适用于日历相对于浏览器视口的位置不需要自动放置日期选择器以使其可见!
open_icon_only布尔false 设置true为时,日期选择器仅在用户单击关联图标时显示,而不是在单击关联元素时显示。
open_on_focus布尔falsetrue如果希望在父元素(如果open_icon_only未设置为false)或关联的日历图标(如果show_icon设置为true)获得焦点时显示日期选择器,请 将此属性设置为。
目的false
没有与另一个日期选择器配对
如果设置为附加了Zebra Datepicker的一个或多个jQuery元素,那些特定日期选择器将使用当前日期选择器的值作为开始日期

请注意,direction属性中设置的规则仍将适用,但引用日期将不是当前系统日期但是在当前日期选择器中选择的值。

仅在包含“开始日期”的日期选择器上使用此属性,而不在具有“结束日期”的日期选择器上使用此属性,否则 direction 第二个日期选择器的属性将无法按预期工作!
readonly_element布尔true 日历附加到的元素是否应该是只读的?

如果设置为true,则只能通过日期选择器设置日期,并且无法手动输入。
select_other_months布尔false 是否可以选择上一个月和/或下个月的天数?

请注意,如果将此属性的值设置为true,则无论实际值如何,show_other_months都将考虑true值!
show_clear_date0清除日期按钮可见?

可接受的值是:

  • 0 - 仅当先前选择的日期已存在时,才会显示用于清除先前所选日期的按钮; 这意味着如果没有选择日期,则此按钮将不可见; 一旦用户选择了日期并再次打开日期选择器,这次按钮将可见。
  • true 将使按钮始终可见
  • false 将禁用该按钮
show_icon布尔true 是否应将日历图标添加到插件所附加的元素中?

设置为true插件时,会将日历图标附加到插件所附加的元素。
show_other_months布尔true 是否可以看到上个月和/或下个月的天数?
show_select_today'Today' 如果在今天按钮可见?

将此属性设置为除布尔值之外的任何内容都false将启用该按钮,并将使用属性的值作为按钮的标题。将其设置为false将禁用该按钮。
show_week_numberfalse 是否应显示ISO 8601周数?

除此之外的任何内容false都将启用此功能,并将给定值用作列标题。例如,show_week_number: 'Wk'将启用此功能并将Wk作为列的标题。
开始日期false 启动日期选择器的默认日期

必须以format属性定义的格式指定,或者作为JavaScript Date对象指定

如果您的日期格式包含时间,您需要设置默认时间但日期应该是当前date,这是一种方法:

版本之前1.9.11

var date = new Date(); // have this somewhere

// set the start_date property like
start_date: date.getFullYear() + '-' +
  (date.getMonth() + 1 < 10 ? '0' : '') +
  (date.getMonth() + 1) + '-' +
  (date.getDate() < 10 ? '0' : date.getDate()) +
  ' 12:00'

从版本开始1.9.11

start_date: new Date()

请注意,仅当日期选择器附加到的字段中没有值时才使用此值!
从版本1.9.11开始,属性的值可以是JavaScript Date对象
严格布尔false 如果附加日期选择器的输入字段中的默认值,如果它们根据direction和/或无效,则应删除disabled_dates吗?
视图'days' 日期选择器应该如何开始:

有效值是daysmonthsyears

请注意,日期选择器总是days -> months -> years在单击日期选择器的标题时循环,并且years -> months -> days在选择日期时(跳过由于日期格式而丢失的视图)如果日期的格式需要,则可以覆盖属性

的值view!(即如果日期格式不允许选择天数days,则view属性没有意义)
weekend_days排列[0, 6]
周六和周日
这被认为是星期几周末
有效值是06,周日到周六。
zero_pad布尔false 天数<10应该填零吗?
设置true为时,日期数<10将以前缀为前缀0

活动

onChange

每当用户更改视图(天/月/年)时,以及当用户通过单击next/previous任何视图中的图标进行导航时,都会执行回调;

调用的回调函数接收2个参数

  • 当前视图(daysmonthsyears
  • 包含视图中活动元素(未禁用)的数组,作为jQuery元素,允许在日期选择器视图中轻松自定义和与特定单元格交互

this回调函数中的关键字是指日期选择器附加到的元素,作为jQuery对象。

为了简化对特定日期的搜索,每个元素都获得一个date数据属性,其格式取决于view参数的值,如下所示:

  • YYYY-MM-DD对于days视图中的元素
  • YYYY-MM对于months视图中的元素
  • YYYY对于years视图中的元素

以下是我们如何突出每年每个月的 24 天:

$'选择器')。Zebra_DatePicker({

    //   执行每当用户改变视图的功能
    //   (日/月/年),以及当用户
    //   通过点击“下一个” /“上一个”图标可前往[ 
    //   任何的意见
    的onChange  function view elements){

        //   在“天”视图中... 
        if(view ===  ' days '){

            //   遍历视图
            元素中的活动元素each function(){

                //   为了简化搜索特定日期,
                //   每个元素都获得一个“日期”数据属性
                // //   形式为:
                //   -  YYYY-MM-DD,用于“天”视图中的元素
                //   -  YYYY-MM对于“月”视图
                  中的元素// - 对于“年”视图中的元素,为YYYY

                //   所以,因为我们正处于“天”视图,
                //   让我们使用常规
                //   表达式
                找到第24天(注意这将适用于//   每年每个月的第24天)
                if $</font></font></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">(</font></font><span class="pl-c1"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> this</font></font></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">)</font></font><span class="pl-c1"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> .data</font></font></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">(</font></font><span class="pl-s"><span class="pl-pds"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> '</font></font></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> date </font></font><span class="pl-pds"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">'</font></font></span></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">)。</font></font><span class="pl-c1"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> match</font></font></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">(</font></font><span class="pl-sr"><span class="pl-pds"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> / </font></font></span><span class="pl-cce"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">\  -</font></font></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 24 </font></font><span class="pl-k"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">$ /))

                    //并突出显示它!
                    $)。css({
                        backgroundColor     '#C40000 ',
                        颜色              '#FFF '
                    });

            });

        }

    }

});
onClear

用户单击“ 清除”按钮时要执行的回调函数。

回调函数不带参数。this回调函数中的关键字是指日期选择器附加到的元素,作为jQuery对象。

onClose

关闭日期选择器时要执行的回调函数。

回调函数不带参数。this回调函数中的关键字是指日期选择器附加到的元素,作为jQuery对象。

onOpen

显示日期选择器时要执行的回调函数。

回调函数不带参数。this回调函数中的关键字是指日期选择器附加到的元素,作为jQuery对象。

onSelect

选择日期时要执行的回调函数。

回调函数有3个参数:

  • 日期采用format属性指定的格式
  • YYYY-MM-DD如果启用了时间选择器,则格式为日期,另外还有小时,分钟和秒
  • 日期作为JavaScript Date对象

this 回调函数内部是指日期选择器附加到的元素,作为jQuery对象

方法

首先,获得对插件的引用

var datepicker =  $' selector ')。数据' Zebra_DatePicker ');

然后调用类似的方法

datepickerupdate();
clear_date()

清除所选日期(如果有)

destroy()

从元素中删除插件

set_date(date)

将日期选择器附加到的元素的值设置为指定的日期;

日期必须采用format属性 JavaScript Date对象定义的格式。

如果禁用日期(disabled_dates由于direction属性或由于属性),将不会设置日期

Date 从版本开始,方法的参数可以是JavaScript 对象 1.9.11
show()

显示日期选择器(除非always_visible属性设置为true

hide()

隐藏日期选择器(除非always_visible属性设置为true

update([options])

在运行时更新配置选项,并重新计算日期选择器相对于父元素的图标位置。每当显示/隐藏/重新定位父元素或更改父元素的尺寸时,都应调用此方法。

该方法接受一个可选参数 - 一个具有更新配置选项的对象:

var datepicker =  $' selector ')。数据' Zebra_DatePicker ');
datepicker更新({
    方向 1 
});

如果您只想更新图标的位置,只需调用不带任何参数的方法:

var datepicker =  $' selector ')。数据' Zebra_DatePicker ');
datepickerupdate();

全球选择

如果您有多个共享常用选项的日期选择器,您可以设置这些选项,如下所示:

//这只需要调用一次,而且
//不必在“就绪”块内调用!
$fnZebra_DatePickerdefaults  = {
     //任何有效选项 
}

任何这样设置的选项都将应用于所有新创建的日期选择器。显然,在创建任何新的日期选择器时设置的选项将覆盖相应的默认值。

支持这个项目的开发

捐

赞助商

跨浏览器/设备测试完成

BrowserStack


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值