日期选择器小组件添加版本:1.0
描述:从弹出或内联日历中选择日期
jQuery UI 日期选择器是一个高度可配置的插件,可为您的页面添加日期选择器功能。您可以轻松自定义日期格式和语言、限制可选择的日期范围,并添加按钮和其他导航选项。
默认情况下,当关联的文本字段获得焦点时,日期选择器日历会在一个小叠加层中打开。对于内联日历,只需将日期选择器附加到 div 或 span 即可。
键盘交互
当日期选择器打开时,可以使用以下键盘命令
-
PAGE UP
:移动到上个月。 -
PAGE DOWN
:移至下个月。 -
CTRL
+PAGE UP
:移至上一年。 -
CTRL
+PAGE DOWN
:移至下一年。 -
CTRL
+HOME
:打开关闭的日期选择器。 -
CTRL
/COMMAND
+HOME
:移至当前月份。 -
CTRL
/COMMAND
+LEFT
:移至前一天。 -
CTRL
/COMMAND
+RIGHT
:移至后一天。 -
CTRL
/COMMAND
+UP
:移至前一周。 -
CTRL
/COMMAND
+DOWN
:移至后一周。 -
ENTER
:选择焦点日期。 -
CTRL
/COMMAND
+END
:关闭日期选择器并清除日期。 -
ESCAPE
:关闭日期选择器,不选择任何日期。
实用程序函数
$.datepicker.setDefaults( options )
更改所有日期选择器的默认选项。
使用 option()
方法更改单个实例的选项。
设置所有日期选择器在获得焦点或单击图标时打开。
1
2
3
4
5
6
|
|
设置所有日期选择器显示法语文本。
1
|
|
$.datepicker.formatDate( format, date, options )
使用指定格式将日期格式化为字符串值。
格式可以是以下内容的组合
- d - 月份中的天数(无前导零)
- dd - 月份中的天数(两位数)
- o - 一年中的一天(无前导零)
- oo - 一年中的一天(三位数)
- D - 星期名称缩写
- DD - 星期名称全称
- m - 年份中的月份(无前导零)
- mm - 年份中的月份(两位数)
- M - 月份名称缩写
- MM - 月份名称全称
- y - 年份(两位数)
- yy - 年份(四位数)
- @ - Unix 时间戳(自 1970/01/01 起的毫秒数)
- ! - Windows 刻度(自 0001/01/01 起的 100 纳秒)
- '...' - 文本原样
- '' - 单引号
- 其他任何内容 - 文本原样
$.datepicker
中还提供了一些预定义的标准日期格式
- ATOM - 'yy-mm-dd'(与 RFC 3339/ISO 8601 相同)
- COOKIE - 'D, dd M yy'
- ISO_8601 - 'yy-mm-dd'
- RFC_822 - 'D, d M y'(参见 RFC 822)
- RFC_850 - 'DD, dd-M-y'(参见 RFC 850)
- RFC_1036 - 'D, d M y'(参见 RFC 1036)
- RFC_1123 - 'D, d M yy'(参见 RFC 1123)
- RFC_2822 - 'D, d M yy'(参见 RFC 2822)
- RSS - 'D, d M y'(与 RFC 822 相同)
- TICKS - '!'
- TIMESTAMP - '@'
- W3C - 'yy-mm-dd'(与 ISO 8601 相同)
以 ISO 格式显示日期。生成“2007-01-26”。
1
|
|
以扩展法语格式显示日期。生成“Samedi, Juillet 14, 2007”。
1
2
3
4
5
6
|
|
$.datepicker.parseDate( format, value, options )
从指定格式的字符串值中提取日期。
格式可以是以下内容的组合
- d - 月份中的天数(无前导零)
- dd - 月份中的天数(两位数)
- o - 一年中的第几天(无前导零)
- oo - 一年中的第几天(三位数)
- D - 星期名称缩写
- DD - 星期名称全称
- m - 年份中的月份(无前导零)
- mm - 年份中的月份(两位数)
- M - 月份名称缩写
- MM - 月份名称全称
- y - 年份(两位数)
- yy - 年份(四位数)
- @ - Unix 时间戳(自 1970/01/01 起的毫秒数)
- ! - Windows 刻度(自 0001/01/01 起的 100 纳秒)
- '...' - 文本原样
- '' - 单引号
- 其他任何内容 - 文本原样
可能会引发许多异常
- 如果 format 或 value 为 null,则为“无效参数”
- 如果 format 指示了未找到的数字值,则为“位置 nn 处缺少数字”
- 如果 format 指示了未找到的日期或月份名称,则为“位置 nn 处未知名称”
- 如果 format 指示了未找到的文字值,则为“位置 nn 处意外文字”
- 如果日期无效,例如“31/02/2007”,则为“无效日期”
以 ISO 格式提取日期。
1
|
|
以扩展法语格式提取日期。
1
2
3
4
5
6
7
|
|
$.datepicker.iso8601Week( date )
确定给定日期的一年中第几周:1 到 53。
此函数使用 ISO 8601 对一周的定义:一周从星期一开始,一年的第一周包含 1 月 4 日。这意味着前一年的最多三天可能包含在当前年的第一周中,而当前年的最多三天可能包含在前一年的最后一周中。
此函数是 calculateWeek
选项的默认实现。
查找日期的一年中第几周。
1
|
|
$.datepicker.noWeekends
设置为 beforeShowDay 函数以防止选择周末。
我们可以将 noWeekends()
函数提供给 beforeShowDay
选项,它将计算所有工作日并提供一个 true
/false
值数组,指示日期是否可选择。
设置日期选择器,以便无法选择周末
1
2
3
|
|
本地化
Datepicker 提供本地化其内容以适应不同语言和日期格式的支持。每个本地化都包含在自己的文件中,语言代码附加在名称中,例如,法语的 jquery.ui.datepicker-fr.js
。应在主 datepicker 代码之后包含所需的本地化文件。每个本地化文件都会将自己的选项添加到可用本地化集中,并自动将它们作为所有实例的默认值应用。可以在 https://github.com/jquery/jquery-ui/tree/master/ui/i18n 找到本地化文件。
$.datepicker.regional
属性保存了一个本地化数组,按语言代码编制索引,其中 ""
指代默认值(英语)。每个条目都是一个具有以下属性的对象:closeText
、prevText
、nextText
、currentText
、monthNames
、monthNamesShort
、dayNames
、dayNamesShort
、dayNamesMin
、weekHeader
、dateFormat
、firstDay
、isRTL
、showMonthAfterYear
和 yearSuffix
。
你可以使用以下内容还原默认本地化
$.datepicker.setDefaults( $.datepicker.regional[ "" ] );
然后可以针对特定区域设置覆盖单个 datepicker
$( selector ).datepicker( $.datepicker.regional[ "fr" ] );
主题
Datepicker 小组件使用 jQuery UI CSS 框架 来设置其外观和感觉。如果需要特定于 datepicker 的样式,则可以使用以下 CSS 类名称进行覆盖或作为 classes
选项 的键
-
ui-datepicker
:datepicker 的外部容器。如果 datepicker 是内联的,则此元素还将具有ui-datepicker-inline
类。如果设置了isRTL
选项,则此元素还将具有ui-datepicker-rtl
类。-
ui-datepicker-header
:datepicker 标题的容器。-
ui-datepicker-prev
:用于选择前一个月的控件。 -
ui-datepicker-next
:用于选择后一个月的控件。 -
ui-datepicker-title
:包含月份和年份的 datepicker 标题的容器。-
ui-datepicker-month
:月份的文本显示或<select>
元素(如果设置了changeMonth
选项)。 -
ui-datepicker-year
:年份的文本显示或<select>
元素(如果设置了changeYear
选项)。
-
-
-
ui-datepicker-calendar
:包含日历本身的表格。-
ui-datepicker-week-end
:包含周末日期的单元格。 -
ui-datepicker-other-month
:包含当前选定月份之外的日期的单元格。 -
ui-datepicker-unselectable
:包含用户不可选日期的单元格。 -
ui-datepicker-current-day
:包含所选日期的单元格。 -
ui-datepicker-today
:包含今天的日期的单元格。
-
-
ui-datepicker-buttonpane
:当设置showButtonPanel
选项时使用的按钮面板。-
ui-datepicker-current
:用于选择今天的日期的按钮。
-
-
如果numberOfMonths
选项用于一次显示多个月份,则会使用许多其他类
-
ui-datepicker-multi
:多月日期选择器的最外层容器。此元素还可以具有ui-datepicker-multi-2
、ui-datepicker-multi-3
或ui-datepicker-multi-4
类名,具体取决于要显示的月份数。-
ui-datepicker-group
:组内的各个选择器。此元素还将具有ui-datepicker-group-first
、ui-datepicker-group-middle
或ui-datepicker-group-last
类名,具体取决于其在组中的位置。
-
依赖项
其他说明
- 此小组件需要一些功能性 CSS,否则它将无法工作。如果您构建自定义主题,请使用小组件的特定 CSS 文件作为起点。
-
此小组件以编程方式操作其元素的值,因此当元素的值更改时,可能不会触发本机
change
事件。 -
不支持在
<input type="date">
上创建日期选择器,因为与本机选择器存在 UI 冲突。
选项
altField
""
altFormat
选项更改此字段中日期的格式。留空表示没有备用字段。使用指定的 altField
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 altField
选项
1
2
3
4
5
|
|
altFormat
""
使用指定的 altFormat
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 altFormat
选项
1
2
3
4
5
|
|
appendText
""
使用指定的 appendText
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 appendText
选项
1
2
3
4
5
|
|
autoSize
false
true
以自动调整输入字段的大小,以适应当前 dateFormat
中的日期。使用指定的 autoSize
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 autoSize
选项
1
2
3
4
5
|
|
beforeShow
null
beforeShowDay
null
-
[0]
:true
/false
,指示此日期是否可选 -
[1]
:要添加到日期单元格的 CSS 类名,或用于默认显示的""
-
[2]
:此日期的可选弹出工具提示
calculateWeek
jQuery.datepicker.iso8601Week
使用指定的 calculateWeek
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 calculateWeek
选项
1
2
3
4
5
|
|
changeMonth
false
使用指定的 changeMonth
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 changeMonth
选项
1
2
3
4
5
|
|
changeYear
false
yearRange
选项来控制可供选择的年份。使用指定的 changeYear
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 changeYear
选项
1
2
3
4
5
|
|
closeText
"完成"
showButtonPanel
选项显示此按钮。使用指定的 closeText
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 closeText
选项
1
2
3
4
5
|
|
constrainInput
true
true
时,输入字段中的输入将限制为当前 dateFormat
选项允许的字符。使用指定的 constrainInput
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 constrainInput
选项
1
2
3
4
5
|
|
currentText
"今天"
showButtonPanel
选项显示此按钮。使用指定的 currentText
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 currentText
选项
1
2
3
4
5
|
|
dateFormat
"mm/dd/yy"
formatDate
函数。使用指定的 dateFormat
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 dateFormat
选项
1
2
3
4
5
|
|
dayNames
[ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" ]
dateFormat
选项的要求使用。使用指定的 dayNames
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 dayNames
选项
1
2
3
4
5
|
|
dayNamesMin
[ "周日", "周一", "周二", "周三", "周四", "周五", "周六" ]
使用指定的 dayNamesMin
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 dayNamesMin
选项
1
2
3
4
5
|
|
dayNamesShort
[ "周日", "周一", "周二", "周三", "周四", "周五", "周六" ]
dateFormat
选项的要求使用。使用指定的 dayNamesShort
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 dayNamesShort
选项
1
2
3
4
5
|
|
defaultDate
null
dateFormat
中的字符串指定实际日期,或从今天开始的天数(例如 +7),或值和时期的字符串(“y”表示年,“m”表示月,“w”表示周,“d”表示天,例如 '+1m +7d'),或 null 表示今天。- 日期:包含默认日期的日期对象。
-
数字:从今天开始的天数。例如,
2
表示从今天开始的两天,-1
表示昨天。 -
字符串:以
dateFormat
选项定义的格式中的字符串,或相对日期。相对日期必须包含值和周期对;有效周期为"y"
(年)、"m"
(月)、"w"
(周)和"d"
(天)。例如,"+1m +7d"
表示从今天开始一个月和七天。
使用指定的 defaultDate
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 defaultDate
选项
1
2
3
4
5
|
|
持续时间
"normal"
使用指定的 duration
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 duration
选项
1
2
3
4
5
|
|
第一日
0
0
,星期一为 1
,依此类推。使用指定的 firstDay
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 firstDay
选项
1
2
3
4
5
|
|
转到当前
false
true
时,当前日期链接将移动到当前选定的日期,而不是今天。使用指定的 gotoCurrent
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 gotoCurrent
选项
1
2
3
4
5
|
|
无上一步下一步时隐藏
false
使用指定的 hideIfNoPrevNext
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 hideIfNoPrevNext
选项
1
2
3
4
5
|
|
isRTL
false
使用指定的 isRTL
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 isRTL
选项
1
2
3
4
5
|
|
最大日期
null
null
时,没有最大值。- 日期:包含最大日期的日期对象。
-
数字:从今天开始的天数。例如,
2
表示从今天开始的两天,-1
表示昨天。 -
字符串:以
dateFormat
选项定义的格式中的字符串,或相对日期。相对日期必须包含值和周期对;有效周期为"y"
(年)、"m"
(月)、"w"
(周)和"d"
(天)。例如,"+1m +7d"
表示从今天开始一个月和七天。
使用指定的 maxDate
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 maxDate
选项
1
2
3
4
5
|
|
最小日期
null
null
,则没有最小值。- 日期:包含最小日期的日期对象。
-
数字:从今天开始的天数。例如,
2
表示从今天开始的两天,-1
表示昨天。 -
字符串:以
dateFormat
选项定义的格式中的字符串,或相对日期。相对日期必须包含值和周期对;有效周期为"y"
(年)、"m"
(月)、"w"
(周)和"d"
(天)。例如,"+1m +7d"
表示从今天开始一个月和七天。
使用指定的 minDate
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 minDate
选项
1
2
3
4
5
|
|
monthNames
[ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]
dateFormat
选项的要求使用。使用指定的 monthNames
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 monthNames
选项
1
2
3
4
5
|
|
monthNamesShort
[ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]
dateFormat
选项的要求使用。使用指定的 monthNamesShort
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 monthNamesShort
选项
1
2
3
4
5
|
|
nextText
"Next"
使用指定的 nextText
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 nextText
选项
1
2
3
4
5
|
|
numberOfMonths
1
- 数字:一行中要显示的月份数。
- 数组:定义要显示的行数和列数的数组。
使用指定的 numberOfMonths
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 numberOfMonths
选项
1
2
3
4
5
|
|
onChangeMonthYear
null
this
指向关联的输入字段。onClose
null
""
)和日期选择器实例作为参数。this
指向关联的输入字段。onSelect
null
this
指代关联的输入字段。onUpdateDatepicker
null
this
指代关联的输入字段。(添加版本:1.13)
prevText
"上月"
使用指定的 prevText
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 prevText
选项
1
2
3
4
5
|
|
selectOtherMonths
false
showOtherMonths
选项设置为 true
时才适用。使用指定的 selectOtherMonths
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 selectOtherMonths
选项
1
2
3
4
5
|
|
shortYearCutoff
"+10"
dateFormat
'y' 结合使用)。输入的年份值小于或等于截止年份的任何日期都将被视为在当前世纪,而大于截止年份的日期将被视为在前一个世纪。-
数字:一个介于
0
和99
之间的数字,表示截止年份。 -
字符串:从当前年份算起的相对年份数,例如
"+3"
或"-5"
。
使用指定的 shortYearCutoff
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 shortYearCutoff
选项
1
2
3
4
5
|
|
showAnim
"show"
使用指定的 showAnim
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 showAnim
选项
1
2
3
4
5
|
|
showButtonPanel
false
currentText
和 closeText
选项分别自定义按钮文本。使用指定的 showButtonPanel
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 showButtonPanel
选项
1
2
3
4
5
|
|
showCurrentAtPos
0
numberOfMonths
选项显示多个月时,showCurrentAtPos
选项定义在哪个位置显示当前月份。使用指定的 showCurrentAtPos
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 showCurrentAtPos
选项
1
2
3
4
5
|
|
showMonthAfterYear
false
使用指定的 showMonthAfterYear
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 showMonthAfterYear
选项
1
2
3
4
5
|
|
showOn
"focus"
"focus"
) 时、单击按钮 ("button"
) 时或发生任一事件 ("both"
) 时出现。使用指定的 showOn
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 showOn
选项
1
2
3
4
5
|
|
showOptions
{}
showAnim
选项使用 jQuery UI 效果之一,则可以使用此选项为该动画提供其他属性。使用指定的 showOptions
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 showOptions
选项
1
2
3
4
5
|
|
showOtherMonths
false
selectOtherMonths
选项。使用指定的 showOtherMonths
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 showOtherMonths
选项
1
2
3
4
5
|
|
showWeek
false
使用指定的 showWeek
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 showWeek
选项
1
2
3
4
5
|
|
stepMonths
1
使用指定的 stepMonths
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 stepMonths
选项
1
2
3
4
5
|
|
weekHeader
"Wk"
showWeek
选项来显示此列。使用指定的 weekHeader
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 weekHeader
选项
1
2
3
4
5
|
|
yearRange
"c-10:c+10"
"-nn:+nn"
),相对于当前选定的年份("c-nn:c+nn"
),绝对值("nnnn:nnnn"
),或这些格式的组合("nnnn:-nn"
)。请注意,此选项仅影响下拉列表中显示的内容,若要限制可选择的日期,请使用 minDate
和/或 maxDate
选项。使用指定的 yearRange
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 yearRange
选项
1
2
3
4
5
|
|
yearSuffix
""
使用指定的 yearSuffix
选项初始化日期选择器
1
2
3
|
|
在初始化后获取或设置 yearSuffix
选项
1
2
3
4
5
|
|
方法
dialog( date [, onSelect ] [, options ] [, pos ] )返回:jQuery(仅限插件)
-
日期初始日期。
-
onSelect类型:函数()选择日期时的回调函数。该函数接收日期文本和日期选择器实例作为参数。
-
选项类型:选项日期选择器的选项。
-
位置类型:数字[2] 或鼠标事件对话框左上角的位置,表示为
[x, y]
或包含坐标的MouseEvent
。如果未指定,则对话框居中显示在屏幕上。
调用对话框方法
1
|
|
getDate()返回:日期
null
。- 此方法不接受任何参数。
调用 getDate 方法
1
|
|
isDisabled()返回:布尔值
- 此方法不接受任何参数。
调用 isDisabled 方法
1
|
|
option( optionName )返回:对象
获取当前与指定的 optionName
关联的值。
注意:对于以对象作为其值的对象,您可以使用点表示法获取特定键的值。例如,"foo.bar"
将获取 foo
选项上 bar
属性的值。
-
optionName类型:字符串要获取的选项的名称。
调用方法
1
|
|
option()返回:普通对象
- 此签名不接受任何参数。
调用方法
1
|
|
widget()返回:jQuery
jQuery
对象。
- 此方法不接受任何参数。
调用 widget 方法
1
|
|
示例
一个简单的 jQuery UI 日期选择器。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
|