Можно передать специальные строки в класс Datepicker jQuery setDate () метод как "+7", который будет переведен в "7 дней с сегодняшнего дня":
http://docs.jquery.com/UI/Datepicker#method-setDate
Но Вы не можете вывести тот "+7" назад. При вызове getDate (), Вы получаете расчетную получающуюся дату.
У меня есть вариант использования, где я должен вытащить специальную строку "+7" для распространения. Один блок кода передает специальную строку в Datepicker и передает Datepicker к другому блоку кода, который вытаскивает дату, но последний иногда должен знать специальную строку, а не расчетную дату.
Таким образом, я должен улучшить инструмент Datepicker для (a) сохранить специальный код внутренне и (b) выставить его с помощью метода как getOriginallyPassedInDate () или некоторые такой.
Я не ниндзя jQuery/Javascript, таким образом, я мог действительно использовать некоторое руководство о том, как я мог бы предпочтительно незаметно добавить необходимую функциональность к классу Datepicker, способ, которым Вы могли бы патч обезьяны объект в Ruby, который я предполагаю.
Ознакомьтесь с сообщением Пола Айриша о Duck Punching с помощью JQuery
это работает, основываясь на предложении @petersendidit:
// http://paulirish.com/2010/duck-punching-with-jquery/
(function($){
var _raw = null;
var _old = $.fn.datepicker;
$.fn.datepicker = function(arg1, arg2){
if('getRawDate'==arg1){
return _raw;
} else {
if('setDate'==arg1){
_raw = arg2;
}
return _old.apply(this, arguments);
}
};
})(jQuery);
Вам не нужны Duck Punch или Monkey Patch.
Если я использую jQuery UI v1.8rc3, то вариант установки даты по умолчанию - defaultDate
, а не setDate
, как указано в документации. Его можно найти в onSelect
или onClose
fn, например:
$('.pick-date').datepicker({
showWeek: true,
weekHeader: 'W#',
defaultDate: "+9",
onSelect: function(dateText, inst) {
alert("Select: inst.defaultDate = " + inst.settings.defaultDate);
},
onClose: function(dateText, inst) {
alert("Close: inst.defaultDate = " + inst.settings.defaultDate);
}
});
Из отдела Научите человека ловить рыбу , я сделал Две вещи, чтобы узнать это:
Я просмотрел исходный код datepicker. Он ясно показывает параметр defaultDate, который задокументирован для приема +/- N для смещения. У него нет опции setDate
.
Я запустил страницу в отладчике и поместил перерыв в функцию onClose
. Там я мог указать параметр inst и увидел, что настройки хранятся там.