2015-11-30 2 views
2

Edit: работает скрипка: http://jsfiddle.net/yao6dgex/JQuery Datepicker добавляющих дней

Edit 2: Я думаю, я знаю, что происходит, но не причина, это получение фактического дня и добавляя дни, вместо добавление дней с выбранной даты.

Я нашел this ответ на мой вопрос, но он ничего не решает.

Проблема заключается в том, что, когда я добавляю X дней, в том же календаре или в другом, это произойдет в следующем месяце в X-дневный день.

Мой код выглядит следующим образом:

$(document).ready(function() { 
    $("#cal3").datepicker({ 
     showOtherMonths: true, 
     selectOtherMonths: true, 
     dateFormat: "dd/mm/y", 
     onSelect: function(selectedDate) { 
      $("#cal4").datepicker("setDate", selectedDate); 
      $("#cal4").datepicker("setDate", "+3d"); 
      $("#cal4").datepicker("option", "minDate", selectedDate); 
     } 
    }); 
    $("#cal4").datepicker({ 
     showOtherMonths: true, 
     selectOtherMonths: true, 
     dateFormat: "dd/mm/y", 
     onSelect: function(selectedDate) { 
      $("#cal3").datepicker("option", "maxDate", selectedDate); 
     } 
    }); 
}); 

В этом примере я добавил выбранную дату cal4, а затем добавить 3 дня от него.

Datepicker setDate API говорит:

Устанавливает дату DatePicker. Новой датой может быть объект Date или строка в текущем формате даты (например, «01/26/2009»), количество дней с сегодняшнего дня (например, +7) или строка значений и периодов («y «в течение многих лет,« м »в течение нескольких месяцев,« w »в течение недель,« d »в течение нескольких дней, например« + 1m + 7d »), или null, чтобы очистить выбранную дату.

Я пытаюсь добавить X дней с "+Xd", так почему он не работает?

+0

вы пробовали только с «+ X» – vijayP

+0

@vijayP да, и он делает то же самое – Cheshire

+0

может ли он создать для вас рабочую скрипку? – vijayP

ответ

2

Я бы предложил простой обходной путь. Вместо того, чтобы позволить datepicker управлять операцией добавления дней, мы можем сделать это с помощью javascript-объекта Date().

Что-то вроде этого:

$(document).ready(function() { 
    $("#cal3").datepicker({ 
     showOtherMonths: true, 
     selectOtherMonths: true, 
     dateFormat: "dd/mm/y", 
     onSelect: function(selectedDate) { 
      //$("#cal4").datepicker("setDate", selectedDate); 
      var date = $(this).datepicker("getDate"); //Get the Date object with actual date 
      date.setDate(date.getDate() + 3); //Set date object adding 3 days. 
      $("#cal4").datepicker("setDate", date); //Set the date of the datepicker with our date object 
      $("#cal4").datepicker("option", "minDate", selectedDate); 
     } 
    }); 
    $("#cal4").datepicker({ 
     showOtherMonths: true, 
     selectOtherMonths: true, 
     dateFormat: "dd/mm/y", 
     onSelect: function(selectedDate) { 
      $("#cal3").datepicker("option", "maxDate", selectedDate); 
     } 
    }); 
}); 

Я форк jsFiddle с кодом ответа.

+2

Спасибо. Я должен был сделать обходной путь как ваш, чтобы получить то, что мне нужно. Сначала я думал, что плагин выполнит работу с выбранной датой, но, похоже, это не так. Спасибо за ваше время! – Cheshire

+0

Добро пожаловать! Рад быть полезным. Выглядит разумно, что datepicker предоставляет желаемую функциональность, но это не так. Если вам нужно это очень часто, возможно, вы можете попытаться добавить новый метод в плагин для выполнения желаемой операции. – frikinside

Смежные вопросы