# jQuery UI API - 日期選擇器部件(Datepicker Widget)
## 所屬類別
[小部件(Widgets)](ref-widgets.html)
## 用法
**描述:**從彈出框或內聯日歷選擇一個日期。
**版本新增:**1.0
jQuery UI 日期選擇器(Datepicker)是向頁面添加日期選擇功能的高度可配置插件。您可以自定義日期格式和語言,限制可選擇的日期范圍,添加按鈕和其他導航選項。
默認情況下,當相關的文本域獲得焦點時,在一個小的覆蓋層打開日期選擇器。對于一個內聯的日歷,只需簡單地將日期選擇器附加到 div 或者 span 上。
### 鍵盤交互
當日期選擇器打開時,下面的鍵盤命令可用:
* PAGE UP:移到上一個月。
* PAGE DOWN:移到下一個月。
* CTRL+PAGE UP:移到上一年。
* CTRL+PAGE DOWN:移到下一年。
* CTRL+HOME:移到當前月份。如果日期選擇器是關閉的則打開。
* CTRL+LEFT:移到上一天。
* CTRL+RIGHT:移到下一天。
* CTRL+UP:移到上一周。
* CTRL+DOWN:移到下一周。
* ENTER:選擇聚焦的日期。
* CTRL+END:關閉日期選擇器,并清除日期。
* ESCAPE:關閉日期選擇器,不做任何選擇。
### 實用功能
#### $.datepicker.setDefaults( settings )
為所有的日期選擇器改變默認設置。
使用 [`option()`](#method-option) 方法來改變個別實例的設置。
**代碼實例:**
設置所有的日期選擇器在獲得焦點時或點擊圖標時打開。
```
$.datepicker.setDefaults({
showOn: "both",
buttonImageOnly: true,
buttonImage: "calendar.gif",
buttonText: "Calendar"
});
```
設置所有的日期選擇器都有法語文本。
```
$.datepicker.setDefaults( $.datepicker.regional[ "fr" ] );
```
#### $.datepicker.formatDate( format, date, settings )
格式化日期為一個帶有指定格式的字符串值。
格式可以是下列組合:
* d - 一月中的第幾天(沒有前導零)
* dd - 一月中的第幾天(兩位數)
* o - 一年中的第幾天(沒有前導零)
* oo - 一年中的第幾天(三位數)
* D - 天的短名稱
* DD - 天的長名稱
* m - 一年中的第幾月(沒有前導零)
* mm - 一年中的第幾月(兩位數)
* M - 月的短名稱
* MM - 月的長名稱
* y - 年(兩位數)
* yy - 年(四位數)
* @ - Unix 時間戳(ms since 01/01/1970)
* ! - Windows 鐘表(100ns since 01/01/0001)
* '...' - 文本
* '' - 單引號
* 其他 - 文本
也有一些 `$.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"。
```
$.datepicker.formatDate( "yy-mm-dd", new Date( 2007, 1 - 1, 26 ) );
```
以擴展法語格式顯示日期。產生 "Samedi, Juillet 14, 2007"。
```
$.datepicker.formatDate( "DD, MM d, yy", new Date( 2007, 7 - 1, 14 ), {
dayNamesShort: $.datepicker.regional[ "fr" ].dayNamesShort,
dayNames: $.datepicker.regional[ "fr" ].dayNames,
monthNamesShort: $.datepicker.regional[ "fr" ].monthNamesShort,
monthNames: $.datepicker.regional[ "fr" ].monthNames
});
```
#### $.datepicker.parseDate( format, value, settings )
從一個指定格式的字符串值中提取日期。
格式可以是下列組合:
* d - 一月中的第幾天(沒有前導零)
* dd - 一月中的第幾天(兩位數)
* o - 一年中的第幾天(沒有前導零)
* oo - 一年中的第幾天(三位數)
* D - 星期幾的短名稱
* DD - 星期幾的長名稱
* m - 一年中的第幾月(沒有前導零)
* mm - 一年中的第幾月(兩位數)
* M - 月的短名稱
* MM - 月的長名稱
* y - 年(兩位數)
* yy - 年(四位數)
* @ - Unix 時間戳(ms since 01/01/1970)
* ! - Windows 鐘表(100ns since 01/01/0001)
* '...' - 文本
* '' - 單引號
* 其他 - 文本
一些可能被拋出的異常:
* 'Invalid arguments' - 如果格式或值為空則拋出此異常。
* 'Missing number at position nn' - 如果格式顯示一個未找到的數值則拋出此異常。
* 'Unknown name at position nn' - 如果格式顯示一個未找到的星期幾名稱或月份名稱則拋出此異常。
* 'Unexpected literal at position nn' - 如果格式顯示一個未找到的文本值則拋出此異常。
* 'Invalid date' - 如果日期無效則拋出此異常,比如 '31/02/2007'。
**代碼實例:**
提取一個 ISO 格式的日期。
```
$.datepicker.parseDate( "yy-mm-dd", "2007-01-26" );
```
提取一個擴展法語格式的日期。
```
$.datepicker.parseDate( "DD, MM d, yy", "Samedi, Juillet 14, 2007", {
shortYearCuroff: 20,
dayNamesShort: $.datepicker.regional[ "fr" ].dayNamesShort,
dayNames: $.datepicker.regional[ "fr" ].dayNames,
monthNamesShort: $.datepicker.regional[ "fr" ].monthNamesShort,
monthNames: $.datepicker.regional[ "fr" ].monthNames
});
```
#### $.datepicker.iso8601Week( date )
確定一個給定的日期在一年中的第幾周:1 到 53。
該函數使用 ISO 8601 定義一周:一周從星期一開始,每一年的第一周包含 1 月 4 日。這意味著上一年至多有三天可能包含在當年的第一周中,當年至多有三天可能包含在上一年的最后一周中。
該函數是 [`calculateWeek`](#option-calculateWeek) 選項的默認實現。
**代碼實例:**
查找日期在一年中的第幾周。
```
$.datepicker.iso8601Week( new Date( 2007, 1 - 1, 26 ) );
```
#### $.datepicker.noWeekends
設置如 beforeShowDay 函數,防止選擇周末。
我們可以在 [`beforeShowDay`](#option-beforeShowDay) 選項中提供 `noWeekends()` 函數,用來計算所有工作日,提供一個 `true`/`false` 值的數組,用來指示日期是否可選擇。
**代碼實例:**
設置 DatePicker,讓周末不可選。
```
$( "#datepicker" ).datepicker({
beforeShowDay: $.datepicker.noWeekends
});
```
### 局限
日期選擇器提供了迎合不同的語言和日期格式本地化內容的支持。每個本地化包含在名稱后追加語言代碼的文件中,例如法語為 `jquery.ui.datepicker-fr.js`。所需的本地化文件需要包含在主要的日期選擇器代碼后面。每個本地化文件添加了它自己的設置到可用的本地化集合中,所有實例自動應用這些設置為默認設置。
`$.datepicker.regional` 屬性保存了一個本地化數組,以語言代碼作為前置,默認前置為 `""`,表示英語。每個條目是一個帶有下列屬性的對象:`closeText`、`prevText`、`nextText`、`currentText`、`monthNames`、`monthNamesShort`、`dayNames`、`dayNamesShort`、`dayNamesMin`、`weekHeader`、`dateFormat`、`firstDay`、`isRTL`、`showMonthAfterYear` 和 `yearSuffix`。
您可以通過下面代碼恢復默認的本地化:
`$.datepicker.setDefaults( $.datepicker.regional[ "" ] );`
您可以通過下面代碼覆蓋一個特定地點的日期選擇器:
`$( selector ).datepicker( $.datepicker.regional[ "fr" ] );`
### 主題化
日期選擇器部件(Datepicker Widget)使用 [jQuery UI CSS 框架](api-css-framework.html) 來定義它的外觀和感觀的樣式。如果需要使用日期選擇器指定的樣式,則可以使用下面的 CSS class 名稱:
* `ui-datepicker`:日期選擇器的外層容器。如果日期選擇器是內聯的,該元素會另外帶有一個 `ui-datepicker-inline` class。如果設置了 [`isRTL`](#option-isRTL) 選項,該元素會另外帶有一個 `ui-datepicker-rtl` class。
* `ui-datepicker-header`:日期選擇器的頭部容器。
* `ui-datepicker-prev`:用于選擇上一月的控件。
* `ui-datepicker-next`:用于選擇下一月的控件。
* `ui-datepicker-title`:日期選擇器包含月和年的標題容器。
* `ui-datepicker-month`:月的文本顯示,如果設置了 [`changeMonth`](#option-changeMonth) 選項則顯示 `<select>` 元素。
* `ui-datepicker-year`:年的文本顯示,如果設置了 [`changeYear`](#option-changeYear) 選項則顯示 `<select>` 元素。
* `ui-datepicker-calendar`:包含日歷的表格。
* `ui-datepicker-week-end`:周末的單元格。: Cells containing weekend days.
* `ui-datepicker-other-month`:發生在某月但不是當前月天數的單元格。
* `ui-datepicker-unselectable`:用戶不可選擇的單元格。
* `ui-datepicker-current-day`:已選中日期的單元格。
* `ui-datepicker-today`:當天日期的單元格。
* `ui-datepicker-buttonpane`:當設置 [`showButtonPanel`](#option-showButtonPanel) 選項時使用按鈕面板(buttonpane)。
* `ui-datepicker-current`:用于選擇當天日期的按鈕。
如果 [`numberOfMonths`](#option-numberOfMonths) 選項用于顯示多個月份,則使用一些額外的 class:
* `ui-datepicker-multi`:一個多月份日期選擇器的最外層容器。該元素會根據要顯示的月份個數另外帶有 `ui-datepicker-multi-2`、`ui-datepicker-multi-3` 或 `ui-datepicker-multi-4` class 名稱。
* `ui-datepicker-group`:分組內單獨的選擇器。該元素會根據它在分組中的位置另外帶有 `ui-datepicker-group-first`、`ui-datepicker-group-middle` 或 `ui-datepicker-group-last` class 名稱。
### 依賴
* [UI 核心(UI Core)](ref-ui-core.html)
* [特效核心(Effects Core)](ref-effects-core.html)(可選的;當與 [`showAnim`](#option-showAnim) 選項一起使用時)
### 附加說明
* 該部件要求一些功能性的 CSS,否則將無法工作。如果您創建了一個自定義的主題,請使用小部件指定的 CSS 文件作為起點。
* 該部件以編程方式操作元素的值,因此當元素的值改變時不會觸發原生的 `change` 事件。
* 不支持在 `<input type="date">` 上創建日期選擇器,因為會造成與本地選擇器的 UI 沖突。
## 實例
一個簡單的 jQuery UI 日期選擇器(Datepicker)。
```
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>日期選擇器部件(Datepicker Widget)演示</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<div id="datepicker"></div>
<script>
$( "#datepicker" ).datepicker();
</script>
</body>
</html>
```
- jQuery UI 基礎
- jQuery UI 簡介
- jQuery UI 下載
- jQuery UI 使用
- jQuery UI 定制
- jQuery UI 工作原理
- jQuery UI 主題
- jQuery UI 主題
- jQuery UI ThemeRoller
- jQuery UI CSS 框架 API
- jQuery UI 設計主題
- jQuery UI 部件庫
- jQuery UI 部件庫(Widget Factory)
- jQuery UI 通過部件庫(Widget Factory)擴展小部件
- jQuery UI 小部件(Widget)方法調用
- jQuery UI 為什么使用部件庫(Widget Factory)
- jQuery UI 如何使用部件庫(Widget Factory)
- jQuery UI 實例
- jQuery UI 實例
- jQuery UI 實例 - 拖動(Draggable)
- jQuery UI 實例 - 放置(Droppable)
- jQuery UI 實例 - 縮放(Resizable)
- jQuery UI 實例 - 選擇(Selectable)
- jQuery UI 實例 - 排序(Sortable)
- jQuery UI 實例 - 折疊面板(Accordion)
- jQuery UI 實例 - 自動完成(Autocomplete)
- jQuery UI 實例 - 按鈕(Button)
- jQuery UI 實例 - 日期選擇器(Datepicker)
- jQuery UI 實例 - 對話框(Dialog)
- jQuery UI 實例 - 菜單(Menu)
- jQuery UI 實例 - 進度條(Progressbar)
- jQuery UI 實例 - 滑塊(Slider)
- jQuery UI 實例 - 旋轉器(Spinner)
- jQuery UI 實例 - 標簽頁(Tabs)
- jQuery UI 實例 - 工具提示框(Tooltip)
- jQuery UI 實例 - 特效(Effect)
- jQuery UI 實例 - 顯示(Show)
- jQuery UI 實例 - 隱藏(Hide)
- jQuery UI 實例 - 切換(Toggle)
- jQuery UI 實例 - 添加 Class(Add Class)
- jQuery UI 實例 - 移除 Class(Remove Class)
- jQuery UI 實例 - 切換 Class(Toggle Class)
- jQuery UI 實例 - 轉換 Class(Switch Class)
- jQuery UI 實例 - 顏色動畫(Color Animation)
- jQuery UI 實例 - 定位(Position)
- jQuery UI 實例 - 部件庫(Widget Factory)
- jQuery UI API 參考
- jQuery UI API 類別 - 特效(Effects)
- jQuery UI API - .addClass()
- jQuery UI API - 百葉窗特效(Blind Effect)
- jQuery UI API - 反彈特效(Bounce Effect)
- jQuery UI API - 剪輯特效(Clip Effect)
- jQuery UI API - 顏色動畫(Color Animation)
- jQuery UI API - 降落特效(Drop Effect)
- jQuery UI API - Easings
- jQuery UI API - .effect()
- jQuery UI API - 爆炸特效(Explode Effect)
- jQuery UI API - 淡入淡出特效(Fade Effect)
- jQuery UI API - 折疊特效(Fold Effect)
- jQuery UI API - .hide()
- jQuery UI API - 突出特效(Highlight Effect)
- jQuery UI API - 膨脹特效(Puff Effect)
- jQuery UI API - 跳動特效(Pulsate Effect)
- jQuery UI API - .removeClass()
- jQuery UI API - 縮放特效(Scale Effect)
- jQuery UI API - 震動特效(Shake Effect)
- jQuery UI API - .show()
- jQuery UI API - 尺寸特效(Size Effect)
- jQuery UI API - 滑動特效(Slide Effect)
- jQuery UI API - .switchClass()
- jQuery UI API - .toggle()
- jQuery UI API - .toggleClass()
- jQuery UI API - 轉移特效(Transfer Effect)
- jQuery UI API 類別 - 特效核心(Effects Core)
- jQuery UI API - 顏色動畫(Color Animation)
- jQuery UI API 類別 - 交互(Interactions)
- jQuery UI API - 可拖拽小部件(Draggable Widget)
- jQuery UI API - 可放置小部件(Droppable Widget)
- jQuery UI API - 鼠標交互(Mouse Interaction)
- jQuery UI API - 可調整尺寸小部件(Resizable Widget)
- jQuery UI API - 可選擇小部件(Selectable Widget)
- jQuery UI API - 可排序小部件(Sortable Widget)
- jQuery UI API 類別 - 方法重載(Method Overrides)
- jQuery UI API - .focus()
- jQuery UI API - .position()
- jQuery UI API 類別 - 方法(Methods)
- jQuery UI API - .disableSelection()
- jQuery UI API - .enableSelection()
- jQuery UI API - .removeUniqueId()
- jQuery UI API - .scrollParent()
- jQuery UI API - .uniqueId()
- jQuery UI API - .zIndex()
- jQuery UI API 類別 - 選擇器(Selectors)
- jQuery UI API - :data() Selector
- jQuery UI API - :focusable Selector
- jQuery UI API - :tabbable Selector
- jQuery UI API 類別 - 主題(Theming)
- jQuery UI API - CSS 框架(CSS Framework)
- jQuery UI API - 圖標(Icons)
- jQuery UI API - 堆疊元素(Stacking Elements)
- jQuery UI API 類別 - UI 核心(UI Core)
- jQuery UI API 類別 - 實用工具(Utilities)
- jQuery UI API - 部件庫(Widget Factory)
- jQuery UI API - 插件橋(Widget Plugin Bridge)
- jQuery UI API 類別 - 小部件(Widgets)
- jQuery UI API - 折疊面板部件(Accordion Widget)
- jQuery UI API - 自動完成部件(Autocomplete Widget)
- jQuery UI API - 按鈕部件(Button Widget)
- jQuery UI API - 日期選擇器部件(Datepicker Widget)
- jQuery UI API - 對話框部件(Dialog Widget)
- jQuery UI API - 菜單部件(Menu Widget)
- jQuery UI API - 進度條部件(Progressbar Widget)
- jQuery UI API - 滑塊部件(Slider Widget)
- jQuery UI API - 旋轉器部件(Spinner Widget)
- jQuery UI API - 標簽頁部件(Tabs Widget)
- jQuery UI API - 工具提示框部件(Tooltip Widget)
- jQuery EasyUI 簡介
- jQuery EasyUI 應用
- jQuery EasyUI 應用 - 創建 CRUD 應用
- jQuery EasyUI 應用 - 創建 CRUD 數據網格(DataGrid)
- jQuery EasyUI 應用 - 創建展開行明細編輯表單的 CRUD 應用
- jQuery EasyUI 應用 - 創建 RSS Feed 閱讀器
- jQuery EasyUI 拖放
- jQuery EasyUI 拖放 - 基本的拖動和放置
- jQuery EasyUI 拖放 - 創建拖放的購物車
- jQuery EasyUI 拖放 - 創建學校課程表
- jQuery EasyUI 菜單與按鈕
- jQuery EasyUI 菜單與按鈕 - 創建簡單的菜單
- jQuery EasyUI 菜單與按鈕 - 創建鏈接按鈕(Link Button)
- jQuery EasyUI 菜單與按鈕 - 創建菜單按鈕(Menu Button)
- jQuery EasyUI 菜單與按鈕 - 創建分割按鈕(Split Button)
- jQuery EasyUI 布局
- jQuery EasyUI 布局 - 為網頁創建邊框布局
- jQuery EasyUI 布局 - 在面板中創建復雜布局
- jQuery EasyUI 布局 - 創建折疊面板
- jQuery EasyUI 布局 - 創建標簽頁(Tabs)
- jQuery EasyUI 布局 - 動態添加標簽頁(Tabs)
- jQuery EasyUI 布局 - 添加自動播放標簽頁(Tabs)
- jQuery EasyUI 布局 - 創建 XP 風格左側面板
- jQuery EasyUI 數據網格
- jQuery EasyUI 數據網格 - 轉換 HTML 表格為數據網格
- jQuery EasyUI 數據網格 - 取得選中行數據
- jQuery EasyUI 數據網格 - 添加查詢功能
- jQuery EasyUI 數據網格 - 添加工具欄
- jQuery EasyUI 數據網格 - 創建復雜工具欄
- jQuery EasyUI 數據網格 - 設置凍結列
- jQuery EasyUI 數據網格 - 動態改變列
- jQuery EasyUI 數據網格 - 格式化列
- jQuery EasyUI 數據網格 - 設置排序
- jQuery EasyUI 數據網格 - 自定義排序
- jQuery EasyUI 數據網格 - 創建列組合
- jQuery EasyUI 數據網格 - 添加復選框
- jQuery EasyUI 數據網格 - 自定義分頁
- jQuery EasyUI 數據網格 - 啟用行內編輯
- jQuery EasyUI 數據網格 - 擴展編輯器
- jQuery EasyUI 數據網格 - 列運算
- jQuery EasyUI 數據網格 - 合并單元格
- jQuery EasyUI 數據網格 - 創建自定義視圖
- jQuery EasyUI 數據網格 - 創建頁腳摘要
- jQuery EasyUI 數據網格 - 條件設置行背景顏色
- jQuery EasyUI 數據網格 - 創建屬性網格
- jQuery EasyUI 數據網格 - 擴展行顯示細節
- jQuery EasyUI 數據網格 - 創建子網格
- jQuery EasyUI 數據網格 - 使用虛擬滾動視圖顯示海量數據
- jQuery EasyUI 數據網格 - 添加分頁組件
- jQuery EasyUI 窗口
- jQuery EasyUI 窗口 - 創建簡單窗口
- jQuery EasyUI 窗口 - 自定義窗口工具欄
- jQuery EasyUI 窗口 - 窗口與布局
- jQuery EasyUI 窗口 - 創建對話框
- jQuery EasyUI 窗口 - 自定義帶有工具條和按鈕的對話框
- jQuery EasyUI 樹形菜單
- jQuery EasyUI 樹形菜單 - 使用標記創建樹形菜單
- jQuery EasyUI 樹形菜單 - 創建異步樹形菜單
- jQuery EasyUI 樹形菜單 - 樹形菜單添加節點
- jQuery EasyUI 樹形菜單 - 創建帶復選框的樹形菜單
- jQuery EasyUI 樹形菜單 - 樹形菜單拖放控制
- jQuery EasyUI 樹形菜單 - 樹形菜單加載父/子節點
- jQuery EasyUI 樹形菜單 - 創建基礎樹形網格
- jQuery EasyUI 樹形菜單 - 創建復雜樹形網格
- jQuery EasyUI 樹形菜單 - 樹形網格動態加載
- jQuery EasyUI 樹形菜單 - 樹形網格添加分頁
- jQuery EasyUI 樹形菜單 - 樹形網格惰性加載節點
- jQuery EasyUI 表單
- jQuery EasyUI 表單 - 創建異步提交表單
- jQuery EasyUI 表單 - 表單驗證
- jQuery EasyUI 表單 - 創建樹形下拉框
- jQuery EasyUI 表單 - 格式化下拉框
- jQuery EasyUI 表單 - 過濾下拉數據網格
- jQuery EasyUI 插件
- jQuery EasyUI 擴展
- 免責聲明