學習要點:
- 調用 datepicker( ) 方法
- 修改 datepicker()樣式
- datepicker( ) 方法的屬性
- datepicker( ) 方法的事件
一、調用 datepicker()方法
$('#date').datepicker();
二、修改 datepicker()樣式
修改樣式,可以在瀏覽器中審查元素,然后修改對應地方的樣式
// 修改當天日期的樣式
.ui-datepicker-today .ui-state-highlight{
border: 1px solid #eee;
color: #f60;
}
//修改選定日期的樣式
.ui-datepicker-current-day .ui-state-active{
border: 1px solid #eee;
color: #06f;
}
三、datepicker()方法的屬性
日歷方法有兩種形式:1、datepicker(options),options 是以對象鍵值對的形式傳參,每個鍵值對表示一個選項;2、datepicker('aciton',param),action 是操作對話框方法的字符串,param則是 options 的某個選項。




// 設置日期格式
$('#date').datepicker({
dateFormat: 'yy-mm-dd'
});

// 指定星期中天的最小格式
$('#date').datepicker({
dayNamesMin: ['日','一','二','三','四','五','六'],
});

// 指定月份的長格式
$('#date').datepicker({
monthNames: ['一月','二月','三月','四月','五月','六月',
'七月','八月','九月','十月','十一月','十二月']
});
// 指定input域
<input type="test" id="abc" /> $('#date').datepicker({ altField: '#abc' })


// 添加到input域的可選日期格式
<input type="test" id="abc" /> $('#date').datepicker({ altField: '#abc', altFormat: 'yy/mm/dd' })

// 在input域后附加文本
$('#date').datepicker({
appendText: '日歷'
})
datepicker外觀選項:



//顯示多個日歷
$('#date').datepicker({
numberOfMonth: 3, // 一排3個
numberOfMonth: [3,2], // 三排每排2個
});
//填充沒有顯示的單元格,但無法使用
$('#date').datepicker({
showOtherMonths: true,
});

//選擇上個月或下個月日期,前提是,showOtherMonths設置為 true
$('#date').datepicker({
showOtherMonths: true,
selectOtherMonths: true,
})
//顯示快速選擇月份的下拉列表
$('#date').datepicker({
changeMonth: true,
monthNamesShort: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'] //且讓月份顯示為中文
})

//顯示快速選擇年份的下拉列表
$('#date').datepicker({
changeYear: true
})
//觸發方式
$('#date').datepicker({
showOn: 'button' // 點擊按鈕
})
//可選最大日期
$('#date').datepicker({
maxDate: 0 // 當前日期的 0 天,就是當天
})
// 如果上月和下月不存在則隱藏按鈕
$('#date').datepicker({
maxDate: 0 // 當前日期之后的 0 天,就是當天
hideIfNoPrevNext: true
})
// 可選最小日期
$('#date').datepicker({
maxDate: 0 // 當前日期之后的 0 天,就是當天
minDate: -5 // 當前日期之前的 5 天
hideIfNoPrevNext: true
})
// 生日選擇時,只需配合maxDate和yearRange
$('#date').datepicker({
maxDate: 0 // 當前日期之后的 0 天,就是當天
hideIfNoPrevNext: true,
// maxDate和minDate只是限制日期,而年份限制的優先級沒有另外一個高
yearRange: '1950:2020'
})
四、datepicker()方法的事件
除了屬性設置外,datepicker( ) 方法也提供了大量的事件。這些事件可以給各種不同狀態時提供回調函數。這些回調函數中的 this 值等於對話框內容的div 對象,不是整個對話框的div.


// 禁用每個月的1號
$('#date').datepicker({
beforeShowDay: function(date){
if(date.getDate() == 1 ){
return [false,'class名','不能選擇1號'];
}else{
return [true];
}
}
})
注意:jQuery UI只允許使用選項中定義的事件。目前還不可以使用 on( ) 方法來管理。

(一般在內部寫是初始化時使用的,在外部寫是做一些變化時使用的)

// 獲取當前選定日期
alert($('#date').datepicker('getDate')); //獲取當前選定日期
alert($('#date').datepicker('getDate').getFullYear()); //獲取當前選定日期的年份
// 設置當前選定日期
$('#date').datepicker('getDate','2013-02-01')

【* 漢化 *】
注意:默認情況下,日歷顯示為英文。如果你想使用中文日歷,直接引入中文語言包即可。或者把中文語言包的幾行代碼整合到某個 js 文件里即可。參考:
http://www.ycku.com/jquery-44/
jQuery(function($){
$.datepicker.regional['zh-CN'] = {
closeText: '關閉',
prevText: '<上月',
nextText: '下月>',
currentText: '今天',
monthNames: ['一月','二月','三月','四月','五月','六月',
'七月','八月','九月','十月','十一月','十二月'],
monthNamesShort: ['一','二','三','四','五','六',
'七','八','九','十','十一','十二'],
dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
dayNamesMin: ['日','一','二','三','四','五','六'],
weekHeader: '周',
dateFormat: 'yy-mm-dd',
firstDay: 1,
isRTL: false,
showMonthAfterYear: true,
yearSuffix: '年'};
$.datepicker.setDefaults($.datepicker.regional['zh-CN']);
});