2014-07-01 8 views
15

Tutarlılık açısından, JQuery UI'nin datepicker'ının ayrıştırma/biçimlendirmesini değiştirmek yerine momentimleri kullanmak istiyorum. Bunu yapmanın en iyi yolu olabilecek herhangi bir düşünce var mı?jquery datepicker dateFormat'i ayrıştırmak ve biçimlendirmek için moment momentleri ile değiştirin

+0

tek soru: Boş değerler ile nasıl çalışıyor? Kırık takvim gösteriyor mu? – demo

+1

@demo http://stackoverflow.com/questions/24500726/replace-the-jquery-datepicker-dateformat-with-momentjs-parsing-and-format?noredirect=1#comment68137293_24500727 ile ilgili daha fazla bilgi almak istiyorum. Bunu ekleyebilir - bir anın 'isValid' işlevini kullanarak bunu yapmak çok kolaydır. – Clint

cevap

30

Şimdiye kadar bu konuda bulduğum en iyi yöntem şöyle küresel jquery-uiparseDate ve formatDate işlevlerini geçersiz kılmak için geçerli:

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

O zaman bu güzel her zamanki kullanmanızı sağlar bir momentjs için biçimi yerine http://momentjs.com/docs/#/parsing/string-format/

$(".selector").datepicker({ dateFormat: "MM-DD-YYYY" }); 
bir alana bir datepicker takılarak ancak belirttiğiniz biçimi yerine sevk edecektir sözdizimi
+0

Bu harika! Başkalarının [etrafta] sunduğundan daha basit bir yol (http://stackoverflow.com/questions/20101603/how-do-i-convert-between-date-formats-used-by-jquery-ui-datepicker-and-moment -js). Teşekkürler! – zVictor

+0

Güzel bir çözüm ancak 3. parametre (ayarlar parametresi) eksik, bu nedenle datepicker işlevinin parçaları kayboluyor. – ViRuSTriNiTy

+1

@ViRuSTriNiTy - üçüncü seçenek parametresi yalnızca jQuery UI'nin tarihi nasıl ayrıştırdığıyla ilgilidir. Tüm ayrıştırma işlevini moment momentleriyle değiştirdiğimizden, bu geçerli değildir. örneğin momentler {dayNamesShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"]} anlamamaktadır. Belki de gerçekten istediğin iki şey arasında bir şeyler yazabilirsin, ama muhtemelen bu ayarları global olarak değiştirmekten daha iyi olurdun: http://momentjs.com/docs/#/i18n/changing-locale/ – Clint