查找到一篇有用的文章,點我連結
不過該內容是針對 UI 1.7.2 所寫,而我使用的 UI 是較新的版本,
因此就改寫了部份語法,在這邊跟大家分享一下
主要我跟 Charlie 一樣,都改寫了_generateMonthYearHeader,
它主要的用途就是顯示年份與月份的下拉式選單,不過我是直接將原先的寫法覆寫,
因此如果沒有引用此 JS 檔時,不會影響到暨有的 datepicker!
接著我額外再覆寫了_formatDate與_setDateFromField,
前者的目的就是顯示民國年的格式,後者則是為了日期改變時,重新選擇日期能夠停留在正確的日期上!
由於前兩個函數 Charlie 都已經有介紹過了,因此在這邊我額外針對 _setDateFromField 做說明,詳情如下程式碼:
_setDateFromField : function(inst)
{
//假設日期格式已經是民國年格式,Ex: 99-08-14
var dateFormat = this._get(inst, 'dateFormat');
var dates = inst.input ? inst.input.val() : null;
inst.endDay = inst.endMonth = inst.endYear = null;
var date = defaultDate = this._getDefaultDate(inst);
var settings = this._getFormatConfig(inst);
try
{
var dateArr = dates.split("-");
// 將民國年份轉為西元年才能 new Date 物件
var year = parseInt(dateArr[0], 10) + 1911;
var month = parseInt(dateArr[1], 10) - 1;
var day = parseInt(dateArr[2], 10);
date = new Date(year, month, day);
} catch (event)
{
this.log(event);
date = defaultDate;
}
//設定相關資料
inst.selectedDay = date.getDate();
inst.drawMonth = inst.selectedMonth = date.getMonth();
inst.drawYear = inst.selectedYear = date.getFullYear();
inst.currentDay = (dates ? date.getDate() : 0);
inst.currentMonth = (dates ? date.getMonth() : 0);
inst.currentYear = (dates ? date.getFullYear() : 0);
this._adjustInstDate(inst);
}
點我下載原始碼
這個拿來用在 jQuery 1.6.2, jQuery ui 1.8.16 會有問題嗎?
回覆刪除不好意思, 我沒有針對這個版本進行過測試
回覆刪除但是我想應該也是可以使用才對,除非他已經改呼叫其它函數
如果有什麼問題也歡迎你分享給大家知道,謝謝
試過了 jQuery UI 1.8.16 不 work.
回覆刪除這是我改的 http://goo.gl/cBGrf
謝謝Eddie兄提供的程式碼,感恩啦
回覆刪除可以改為 101/01/01 鈄線方式 ?
回覆刪除可以參考chineseDatepicker.js中函數_formatDate,將return的"-"置換為"/"
回覆刪除