2015-06-09 3 views
4

http://jsfiddle.net/t3n9p7kp/1/дата Установка Datepicker

У меня есть DatePicker который устанавливается, чтобы выбрать целую неделю. У меня есть две кнопки, которые должны перемещать выбранные даты вперед и назад в неделю. Кнопка «вперед» работает все время, но обратная кнопка работает только в том случае, если месяц изменяется. Если месяц не меняется, ничего не происходит. Код ниже.

$(document).ready(function() { 
    $(function() { 
     var startDate; 
     var endDate; 

     var selectCurrentWeek = function() { 
      window.setTimeout(function() { 
       $('.week-picker').find('.ui-datepicker-current-day a').addClass('ui-state-active')}, 1); 
     } 

     $('.week-picker').datepicker({ 
      showOtherMonths: true, 
      selectOtherMonths: true, 
      onSelect: function(dateText, inst) { 
       var date = $(this).datepicker('getDate'); 
       startDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay()); 
       endDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 6); 
       var dateFormat = inst.settings.dateFormat || $.datepicker._defaults.dateFormat; 
       $('.startDate').val($.datepicker.formatDate(dateFormat, startDate, inst.settings)); 
       $('.endDate').val($.datepicker.formatDate(dateFormat, endDate, inst.settings)); 
       $('.week-picker').val(" " + $.datepicker.formatDate(dateFormat, startDate, inst.settings) + " - " + $.datepicker.formatDate(dateFormat, endDate, inst.settings)); 

       selectCurrentWeek(); 
      }, 
      beforeShowDay: function(date) { 
       var cssClass = ''; 
       if (date >= startDate && date <= endDate) 
        cssClass = 'ui-datepicker-current-day'; 
       return [true, cssClass]; 
      }, 
      onChangeMonthYear: function(year, month, inst) { 
       selectCurrentWeek(); 
      } 
     }); 

     $('.week-picker').datepicker("setDate", new Date()); 
     $('.ui-datepicker-current-day').click(); 

     $('.week-picker .ui-datepicker-calendar tr').on('mousemove', null, function() { $(this).find('td a').addClass('ui-state-hover'); }); 
     $('.week-picker .ui-datepicker-calendar tr').on('mouseleave', null, function() { $(this).find('td a').removeClass('ui-state-hover'); }); 
    }); 

    $('#preWeek').click(function() { 
     var startDate = $('.startDate').val(); 
     var newDate = new Date(startDate); 
     newDate.setDate(newDate.getDate() - 7); 
     $('.week-picker').datepicker("setDate", new Date(newDate)); 
     $('.ui-datepicker-current-day').click(); 
     return false; 
    }); 

    $('#nextWeek').click(function() { 
     var endDate = $('.endDate').val(); 
     var newDate = new Date(endDate); 
     newDate.setDate(newDate.getDate() + 1); 
     $('.week-picker').datepicker("setDate", new Date(newDate)); 
     $('.ui-datepicker-current-day').click(); 
     return false; 
    }); 
}); 

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

+3

Если вы можете добавить этот код в скрипке, было бы легко ответить .. –

+0

не могли бы вы реализовать это в скрипке ?. –

+0

Вот скрипка: [link] (http://jsfiddle.net/t3n9p7kp/1/) – Mayiko

ответ

0

Добавление $('.ui-datepicker-current-day:first') вместо $('.ui-datepicker-current-day') в обработчиках для следующий и пред кнопки исправит проблему. Это было вызвано тем, что вы нажимали на 7 дней недели.

$('#preWeek').click(function() { 
    var startDate = $('.startDate').val(); 
    var newDate = new Date(startDate); 
    newDate.setDate(newDate.getDate() - 7); 
    $('.week-picker').datepicker("setDate", new Date(newDate)); 
    $('.ui-datepicker-current-day:first').click(); 
    return false; 
}); 

$('#nextWeek').click(function() { 
    var endDate = $('.endDate').val(); 
    var newDate = new Date(endDate); 
    newDate.setDate(newDate.getDate() + 1); 
    $('.week-picker').datepicker("setDate", new Date(newDate)); 
    $('.ui-datepicker-current-day:first').click(); 
    return false; 
}); 
+0

http://jsfiddle.net/rejithrkrishnan/t3n9p7kp/4/ обновление вашей скрипки. – RRK

+1

Это интересно. При изменении предыдущей кнопки работает, но следующая кнопка не работает. Если я просто сделаю свое изменение на предыдущей кнопке и оставлю следующую кнопку одинаковой, они оба работают. Благодарю. Я отмечу это как ответ. Вот рабочая скрипка: http://jsfiddle.net/t3n9p7kp/6/ – Mayiko

+0

'$ ('. Ui-datepicker-current-day: last'). Click();' Поместите это в следующую кнопку. Это исправит. Без него каждый ** следующий ** щелкните по 'onselect' нужно выполнить 8 раз. Несмотря на отсутствие проблемы с функциональностью, ее немного «нечисто», вы не думаете? Я обновил скрипку. http://jsfiddle.net/rejithrkrishnan/t3n9p7kp/11/ – RRK

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