2015-06-09 170 views
4

http://jsfiddle.net/t3n9p7kp/1/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

這裏是小提琴:[鏈接](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

相關問題