Существует форма с датой "от" и "до", причем каждый день, месяц и год. Я хочу заполнить datePicker каждым из этих значений dmy выбранной даты ("от" или "до"). Это выглядит так:
$('.year').datepicker({
inline: true,
showOtherMonths: true,
showOn: 'button',
buttonText: '',
defaultDate: new Date(
parseInt($('input[name="ydate'+$(this).attr('name').replace(/.date/, '')+'"]').val())
,parseInt($('input[name="mdate'+$(this).attr('name').replace(/.date/, '')+'"]').val())-1
, parseInt($('input[name="ddate'+$(this).attr('name').replace(/.date/, '')+'"]').val())
),
changeYear: true,
onClose: function(dateText,picker) {
var prefix = $(this).attr('name').replace(/.date/, '');
$('input[name="ddate'+prefix+'"]').val( dateText.split(/\//)[1] );
$('input[name="mdate'+prefix+'"]').val( dateText.split(/\//)[0] );
$('input[name="ydate'+prefix+'"]').val( dateText.split(/\//)[2] );
}
});
Событие onClose отлично заполняет поля ввода dmy, но функция defaultDate не работает так. Какие-либо предложения?
Поскольку контекст выполнения не изменяется, this
все еще относится к контексту метода, в котором инициализируется datepicker.
Таким образом, решение может быть это для перебора множества .year
элементов с помощью .each()
, теперь внутри each
обработчика this
будет относиться к текущему .year
элемента.
$('.year').each(function () {
var nm = $(this).attr('name').replace(/.date/, '');
$(this).datepicker({
inline: true,
showOtherMonths: true,
showOn: 'button',
buttonText: '',
defaultDate: new Date(
parseInt($('input[name="ydate' + nm + '"]').val()), parseInt($('input[name="mdate' + nm + '"]').val()) - 1, parseInt($('input[name="ddate' + nm + '"]').val())),
changeYear: true,
onClose: function (dateText, picker) {
var prefix = $(this).attr('name').replace(/.date/, '');
$('input[name="ddate' + prefix + '"]').val(dateText.split(/\//)[1]);
$('input[name="mdate' + prefix + '"]').val(dateText.split(/\//)[0]);
$('input[name="ydate' + prefix + '"]').val(dateText.split(/\//)[2]);
}
});
})