JQuery DatePicker - 2 входа от и до - PullRequest
       6

JQuery DatePicker - 2 входа от и до

6 голосов
/ 13 декабря 2010

Я использую плагин datequicker Jquery с этим дополнением timepicker в двух полях ввода, одно для даты «От» и второе с датой «До».

Когда яустановите первое, я хочу, чтобы второе было через один день после даты, выбранной в первом, отключив все даты ранее, чем дата, выбранная в дате «От»

Если дата «До»сначала выбирается, затем устанавливается дата «От» до дня, предшествующего дате «До».

Я нашел несколько примеров, но я не знаю, как получить дату со временем . Так, если я, например, выберу 13 / 12/2010 15: 50 в дате «От», дата в дате «До» будет установлена ​​на 14 / 12/2010 15: 50 или, по крайней мере, до 14 / 12/2010 00: 00 .

РЕДАКТИРОВАНИЕ ***

Я только что нашел этот фрагмент кода , который работает, как я хочу, но без надстройки таймера.

 $(function(){

  $('#dateFrom').datepicker({
    dateFormat: 'dd/mm/yy',
    onSelect: function(dateText, inst) {
         $('#dateTo').datepicker('option','minDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay));
          }
  });
  $('#dateTo').datepicker({
    dateFormat: 'dd/mm/yy',
    onSelect: function(dateText, inst) {
         $('#dateFrom').datepicker('option','maxDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay));
    }          
  });

});

Исходя из вышеприведенного кода, можно ли его адаптировать, чтобы я мог использовать его с дополнением timepicker?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Я получил большую часть этого, но не мог понять, как установить hourMin и minuteMin после того, как виджет уже был инициализирован. Учитывая следующий HTML:

<label for="from">From</label><input id="from" name="from" />
<label for="to">To</label><input id="to" name="to" />

А это JS:

$("#from").datetimepicker();
$("#to").datetimepicker({
    beforeShow: function(input, inst) {
        var $toDateInput = $("#to");
        var fromDate = $("#from").datetimepicker("getDate");
        var toDate = $toDateInput.datetimepicker("getDate");
        var afterFromDate;

        if (fromDate) {
            if (!toDate || (toDate <= fromDate)) {
                afterFromDate = new Date(fromDate.toUTCString());
                afterFromDate.setDate(afterFromDate.getDate() + 1);               
                $toDateInput.datetimepicker("setDate", afterFromDate);
            }
            $toDateInput.datetimepicker("option", "minDate", fromDate);
        }
    }
});

Смотрите здесь: http://jsfiddle.net/RWjtL/3/

Большинство ваших критериев удовлетворены, но есть несколько вещей, которые выключены:

  • Когда вы устанавливаете поле «Кому» пустым, минимальная дата «От кого» не удаляется. Я попытался установить для параметра minDate значения null и "" и получил странное поведение. Вот задокументированная проблема, которая может быть связана .
  • Метод beforeShow вызывается несколько раз. Я думаю, что это из-за вызова setDate внутри обработчика, но не могу быть уверен.
  • Как указано выше, мне не удалось установить hourMin и minuteMin после факта, и установка minDate, похоже, не соответствует временной части даты.

Авторская страница GitHub содержит список проблем, некоторые из которых, кажется, связаны с проблемами, с которыми я столкнулся. Надеюсь, что вы начали, по крайней мере.

0 голосов
/ 14 декабря 2010

Попробуйте использовать onSelect или onClose , чтобы изменить параметры minDate и maxDate.

...