jQuery UI 日期选择器

2025年3月17日 | 阅读 12 分钟

jQuery UI 日期选择器控件可以方便用户直观地输入日期。用户可以轻松自定义日期格式和语言,限制可选日期范围,并添加按钮和其他导航选项。

jQuery UI datepicker() 方法创建日期选择器,并通过添加新的 CSS 类来改变页面上 HTML 元素的外观。

语法

您可以使用两种形式的 datepicker() 方法

第一种方法

datepicker (options) 方法指定一个 <input> 元素(或 <div>,或 <span>,取决于您选择的日历显示方式)应被管理为一个日期选择器。options 参数指定日期选择器元素的行为和外观。

语法

您可以使用 JavaScript 对象一次使用一个或多个选项。如果您使用多个选项,应使用逗号将它们分开,如下所示

以下是可以与此方法一起使用的不同选项的列表。

选项描述
altField此选项指定一个 jQuery 选择器,用于一个同样会更新任何日期选择的字段。altFormat 选项可用于设置此值的格式。这对于将日期值设置到要提交到服务器的隐藏 input 元素中非常有用,同时向用户显示更友好的格式。默认值为 ""。
altFormat当指定 altField 选项时使用此选项。它提供了写入备用元素的值的格式。默认值为 ""。
appendText此选项是一个字符串值,将放置在 <input> 元素之后,用于向用户显示说明。默认值为 ""。
autoSize将此选项设置为 true 时,会调整 <input> 元素的大小以适应 datepicker 的日期格式(由 dateFormat 选项设置)。默认值为 false。
beforeShow此选项是一个回调函数,在显示日期选择器之前调用,并将 <input> 元素和日期选择器实例作为参数传递。此函数可以返回一个选项哈希,用于修改日期选择器。默认值为 ""。
beforeShowDay此选项是一个回调函数,接受日期作为参数,在日期选择器的每个日期显示之前调用,并将日期作为唯一参数传递。这可用于覆盖日期元素的某些默认行为。此函数必须返回一个三元素数组。默认值为 null。
buttonImage此选项指定一个图像的路径,该图像将在通过将 showOn 选项设置为 buttons 或 both 来启用的按钮上显示。如果还提供了 buttonText,则按钮文本将成为按钮的 alt 属性。默认值为 ""。
buttonImageOnly
将此选项设置为 true 时,指定由 buttonImage 指定的图像将独立显示(不在按钮上)。showOn 选项仍必须设置为 button 或 both 才能显示图像。默认值为 false。
buttonText此选项指定通过将 showOn 选项设置为 button 或 both 来启用的按钮的标题。默认值为 "..."。
calculateWeek此选项是一个自定义函数,用于计算并返回传递给它的日期的周数。默认实现是由 $.datepicker.iso8601week() 实用函数提供的。
changeMonth将此选项设置为 true 时,会显示一个月份下拉列表,允许用户直接更改月份,而无需使用箭头按钮来逐月切换。默认值为 false。
changeYear将此选项设置为 true 时,会显示一个年份下拉列表,允许用户直接更改年份,而无需使用箭头按钮来逐年切换。yearRange 选项可用于控制可供选择的年份。默认值为 false。
closeText当通过 showbuttonpanel 选项显示按钮面板时,此选项指定用于替换完成按钮默认标题的文本。默认值为 "done"。
constrainInput将此选项设置为 true(默认值)时,对 <input> 元素的文本输入将仅限于当前 dateFormat 选项允许的字符。默认值为 true。
currentText当通过 showButtonPanel 选项显示按钮面板时,此选项指定用于替换今天按钮默认标题的文本。默认值为 "today"。
dateFormat此选项指定要使用的日期格式。默认值为 mm/dd/yy。
dayNames此选项是一个包含 7 个元素的数组,提供完整的星期名称,其中第 0 个元素代表星期日。可用于本地化控件。默认值为 [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]。
dayNamesMin此选项是一个包含 7 个元素的数组,提供最小化的星期名称,其中第 0 个元素代表星期日,用作列标题。可用于本地化控件。默认值为 [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ]。
dayNamesShort此选项是一个包含 7 个元素的数组,提供简写的星期名称,其中第 0 个元素代表星期日。可用于本地化控件。默认值为 [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ]。
defaultDate当 <input> 元素没有值时,此选项设置控件的初始日期,覆盖默认的今天值。这可以是日期实例、距离今天的日天数,或者一个指定绝对或相对日期的字符串。默认值为 null。
duration此选项指定日期选择器显示动画的速度。它可以是 slow、normal 或 fast,或者动画持续时间的毫秒数。默认值为 normal。
firstday此选项指定被认为是每周第一天的星期几,并将作为最左边的列显示。默认值为 0。
gotocurrent将此选项设置为 true 时,当前日期链接将设置为所选日期,覆盖默认的今天。默认值为 false。
hideIfNoPrevNext将此选项设置为 true 时,当上一个和下一个链接不适用时(由 minDate 和 maxDate 选项的设置确定),它们将被隐藏(而不是仅仅禁用)。默认值为 false。
isRTL将此选项设置为 true 时,它将本地化指定为从右到左的语言。默认值为 false。
maxDate此选项设置控件的最大可选日期。这可以是日期实例、距离今天的日天数,或者一个指定绝对或相对日期的字符串。默认值为 null。
minDate此选项设置控件的最小可选日期。这可以是日期实例、距离今天的日天数,或者一个指定绝对或相对日期的字符串。默认值为 null。
monthnames此选项是一个包含 12 个元素的数组,提供完整的月份名称,其中第 0 个元素代表一月。可用于本地化控件。默认值为 [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]。
monthNamesShort此选项是一个包含 12 个元素的数组,提供简写的月份名称,其中第 0 个元素代表一月。可用于本地化控件。默认值为 [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]。
navigationAsDateFormat将此选项设置为 true 时,nexttext、prevtext 和 currenttext 的导航链接在显示前会通过 $.datepicker.formatdate() 函数处理。这允许为这些选项提供日期格式,并将用相关值替换。默认值为 false。
nexttext此选项指定用于替换下一个月导航链接默认的 next 标题的文本。themeRoller 会将此文本替换为图标。默认值为 next。
numberOfMonths
此选项指定在日期选择器中显示的月份数。默认值为 1。
onChangeMonthYear此选项是一个回调,当日期选择器移动到新月份或年份时调用,并将选定的年份、月份(1-based)和日期选择器实例作为参数传递,函数上下文设置为 input 字段元素。默认值为 null。
onClose此选项是一个回调,当日期选择器关闭时调用,并将所选日期作为文本(如果没有选择则为空字符串)和日期选择器实例传递,函数上下文设置为 input 字段元素。默认值为 null。
onSelect此选项是一个回调,当选择日期时调用,并将所选日期作为文本(如果没有选择则为空字符串)和日期选择器实例传递,函数上下文设置为 input 字段元素。默认值为 null。
prevText此选项指定用于替换上一个月导航链接默认的 prev 标题的文本。(注意,themeroller 会将此文本替换为图标)。默认值为 PrevdefaultDatedayNamesMin。
selectOtherMonths将此选项设置为 true 时,显示在显示的月份之前或之后的日期是可选择的。除非 showOtherMonths 选项也设置为 true,否则这些日期不会显示。默认值为 false。
shortYearCutoff如果此选项是一个数字,则指定一个介于 0 到 99 之间的值,在此之前的任何 2 位年份值都将被视为属于上个世纪。如果此选项是一个字符串,则该值将经过数字转换并加到当前年份。默认值为 +10,表示当前年份之后的 10 年。
showAnim此选项指定用于显示和隐藏日期选择器的动画名称。如果指定,必须是 show(默认值)、fadein、slidedown,或任何 jQuery UI 的 show/hide 动画。默认值为 show。
showButtonPanel将此选项设置为 true 时,将在日期选择器底部显示一个按钮面板,其中包含当前和关闭按钮。这些按钮的标题可以通过 currentText 和 closeText 选项提供。默认值为 false。
showCurrentAtPos此选项指定当前日期所在月份在多月显示中的位置(从左上角开始,0-based 索引)。默认值为 0。
showMonthAfterYear将此选项设置为 true 时,日期选择器标题中月份和年份的位置将互换。默认值为 false。
showOn此选项指定日期选择器应何时显示。可能的值是 focus、button 或 both。默认值为 focus。
showOptions此选项提供一个哈希,当为 showAnim 选项指定 jQuery UI 动画时,该哈希将传递给动画。默认值为 {}。
showOtherMonths将此选项设置为 true 时,将显示当前月份第一天和最后一天之前或之后的日期。除非 selectOtherMonths 选项也设置为 true,否则这些日期不可选。默认值为 false。
showWeek将此选项设置为 true 时,将在月份显示的左侧一列中显示周数。calculateWeek 选项可用于更改确定此值的方式。默认值为 false。
stepMonths当单击月份导航控件之一时,此选项指定移动的月份数。默认值为 1。
weekHeader当 showWeek 为 true 时,此选项指定用于周数列的文本,覆盖默认的 wk 值。默认值为 wk。
yearRange当 changeYear 为 true 时,此选项指定 year 下拉列表中显示的年份范围,格式为:from:to。值可以是绝对值或相对值(例如:2005:+2,表示从 2005 年开始到 2 年后)。前缀 c 可用于使相对值相对于所选年份而不是当前年份偏移(例如:c-2:c+3)。默认值为 c-10:c+10。
yearSuffix此选项在日期选择器标题中的年份后显示附加文本。默认值为 ""。

jQuery UI datepicker() 示例 1

让我们看一个简单的例子来演示 datepicker 功能,不传递任何参数给 datpicker() 方法。

立即测试

jQuery UI datepicker() 方法示例 2

内联日期选择器

让我们看一个简单的例子来演示内联日期选择器。

立即测试

jQuery UI datepicker() 方法示例 3

使用 appendText, dateFormat, altField 和 altFormat

让我们看一个例子来演示在 jQueryUI datepicker() 方法中使用 options、appendText、dateFormat、altField 和 altFormat。

立即测试

jQuery UI datepicker() 方法示例 4

使用 showWeek、yearSuffix 和 showAnim

让我们看一个例子来演示在 jQueryUI 的 datepicker() 函数中使用 showWeek、yearSuffix 和 showAnim。

立即测试

第二种方法

datepicker (action, params) 方法用于对日历执行操作,例如选择新日期。action 指定为第一个参数的字符串,并且根据 action,可以选择性地使用一个或多个 params。

语法

以下是与此方法一起使用的操作列表。

操作
描述
destroy()此操作完全移除日期选择器功能。这将使元素恢复到初始化之前的状态。此方法不接受任何参数。
dialog( Date [, onSelect ] [, settings ] [, Pos ] )此操作在 jQuery UI 对话框中显示日期选择器。
getDate()此操作返回与所选日期对应的日期。此方法不接受任何参数。
hide()此操作关闭先前打开的日期选择器。此方法不接受任何参数。
isDisabled()此操作检查日期选择器功能是否被禁用。此方法不接受任何参数。
option(optionName)此操作检索当前与指定的 optionName 关联的值。
option()此操作获取一个包含键/值对的对象,这些键/值对表示当前的日期选择器选项哈希。此方法不接受任何参数。
option(optionName, Value)
此操作设置与指定的 optionName 关联的日期选择器选项的值。
option(Options)此操作为日期选择器设置一个或多个选项。
refresh()此操作在进行一些外部修改后,重新绘制日期选择器。此方法不接受任何参数。
setDate(date)此操作将指定的日期设置为日期选择器的当前日期。
show()此操作打开日期选择器。如果日期选择器已附加到 input,则 input 必须可见才能显示日期选择器。此方法不接受任何参数。
widget()此操作返回一个包含日期选择器的 jQuery 对象。

jQuery UI datepicker() 方法示例 5

让我们看一个例子来演示上面表格中操作的使用。在此示例中,我们使用了 setDate() 操作。

立即测试
下一个主题jQuery UI 对话框