JQuery UI Datepicker newDate минус 2 месяца - PullRequest
3 голосов
/ 10 февраля 2012

Я искал везде, но не могу найти решение этой проблемы.

Мне нужно установить значение ввода datepickers на сегодняшнюю дату минус 2 месяца.

Я использую следующий код для отображения текущей даты по умолчанию в поле ввода ...

jQuery(function () {
jQuery("#datepicker").datepicker({
    dateFormat: 'dd-mm-yy'
});
var day = new Date();
var month = day.getMonth() + 1;
var date = day.getDate() + '-' + month + '-' + day.getFullYear();
jQuery("#datepicker").val(date);
});

Есть ли способ показать это за 2 месяца до этого?

Любая помощь будет высоко ценится.

Ответы [ 2 ]

5 голосов
/ 10 февраля 2012

Установите параметр defaultDate: http://jqueryui.com/demos/datepicker/#option-defaultDate

jQuery(function ($) {
    var day         = new Date(),
        year        = ((day.getMonth() - 2) < 0) ? (day.getFullYear() - 1) : day.getFullYear(),
        month       = ((day.getMonth() - 2) < 0) ? (12 + (day.getMonth() - 2)) : (day.getMonth() + 1),
        date        = day.getDate() + '-' + month + '-' + year;
    $('#datepicker').datepicker({
        dateFormat  : 'dd-mm-yy',
        defaultDate : '-2m'
    }).val(date);
});

Вот демоверсия: http://jsbin.com/ezuxen/edit#javascript,html,live

Вот краткий обзор некоторых изменений, которые я сделалк вашему коду:

  1. Я передал $ обработчику событий document.ready, чтобы его можно было использовать внутри обработчика событий.
  2. Дата теперь устанавливается на два месяцаназад с некоторыми условными выражениями, которые проверяют, был ли два месяца назад другой год.
  3. Я связал вызовы к объекту $('#datepicker') jQuery, поэтому его не нужно было выбирать более одного раза.
  4. Я также разделяю объявления ваших переменных вместо того, чтобы повторно использовать оператор var back-to-back-to-back-to ...

Обратите внимание, что если текущая дата является31 и два месяца назад нет 31 дня, вероятно, это создаст проблему для этого кода.Август является единственным месяцем, в котором 31 день, а два месяца - нет (в июне 30 дней).

4 голосов
/ 25 апреля 2012

Попробуйте это:

var d = new Date();
d.setMonth(d.getMonth() - 2);
$("#datepickerselector").datepicker('setDate',d);

Надеюсь, это поможет.

...