2014-07-01 38 views
15

爲了保持一致性,我希望能夠將JQuery UI的datepicker的解析/格式切換爲使用momentjs。有什麼想法可能是最好的方法來做到這一點?將jquery datepicker dateFormat替換爲momentjs解析和格式

+0

一個問題:它是如何處理空值的?它是否顯示損壞的日曆? – demo

+1

@demo參考我的評論下面http://stackoverflow.com/questions/24500726/replace-the-jquery-datepicker-dateformat-with-momentjs-parsing-and-format?noredirect=1#comment68137293_24500727 如果你想驗證你可以添加它 - 使用'isValid'函數也很容易。 – Clint

回答

30

到目前爲止,我發現做到這一點,最好的方法是覆蓋全局jQuery的UIparseDateformatDate功能,像這樣:

$.datepicker.parseDate = function(format, value) { 
    return moment(value, format).toDate(); 
}; 
$.datepicker.formatDate = function (format, value) { 
    return moment(value).format(format); 
}; 

那麼這很好,您可以使用普通的語法爲日期選擇連接到一個字段,但您指定的格式將改爲指momentjs格式而不是http://momentjs.com/docs/#/parsing/string-format/

$(".selector").datepicker({ dateFormat: "MM-DD-YYYY" }); 
+0

太神奇了!比其他人更容易[建議](http://stackoverflow.com/questions/20101603/how-do-i-convert-between-date-formats-used-by-jquery-ui-datepicker-and-moment -js)。謝謝! – zVictor

+0

不錯的解決方案,但第三個參數(設置參數)丟失,因此日期選擇器功能的部分丟失。 – ViRuSTriNiTy

+1

@ViRuSTriNiTy - 第三個選項參數僅適用於jQuery UI如何解析日期。由於我們在這裏用momentjs替換了整個分析功能,因此它不適用。例如,momentjs不會理解{dayNamesShort:[「Dim」,「Lun」,「Mar」,「Mer」,「Jeu」,「Ven」,「Sam」]}。如果你真的想要,也許你可以在兩者之間寫點東西,但是你可能更適合在全球範圍內改變這些設置:http://momentjs.com/docs/#/i18n/changing-locale/ – Clint