2013-02-26 165 views
0

我正在使用jQuery Datepicker。我能够计算两个选定日期之间的天数,但我需要能够选择日期范围(选择'fromdate'变为'最小'代表'todate',选择'todate'变成'最大'代表'从日期')。 我使用此代码:如何计算jQuery Datepicker中的天数和日期范围?

<script type="text/javascript"> 
$(document).ready(function() { 
var selector = function (dateStr) { 
     var d1 = $('.fromdate').datepicker('getDate'); 
     var d2 = $('.todate').datepicker('getDate'); 
     var diff = 1; 
     if (d1 && d2) { 
      diff = diff + Math.floor((d2.getTime() - d1.getTime())/86400000); // ms per day 
     } 
     $('.calculated').val(diff); 
     $('.minim').val(d1) 
    } 
$('.fromdate').datepicker({ 
       dateFormat : 'yy-mm-dd', 
       changeMonth: true, 
       changeYear: true, 
       minDate: 'minim' 
}); 
$('.todate').datepicker({ 
       dateFormat : 'yy-mm-dd', 
       changeMonth: true, 
       changeYear: true, 
       minDate: 'fromdate' 
}); 
$('.fromdate,.todate').change(selector) 
}); 
</script> 

谢谢!

+0

是这样的[小提琴](http://jsfiddle.net/BXMv6/)? – 2013-02-26 09:13:28

+0

是的,有点扭曲。但现在我想我会管理。 – 2013-02-26 09:34:31

+0

@Bojan Kovacevic - 是的,工作!非常感谢你! – 2013-02-26 09:48:30

回答

0

感谢Bojan Kovacevic我设法解决了我的问题。它是这样的:

<script type="text/javascript"> 
$(document).ready(function() { 
var selector = function (dateStr) { 
     var d1 = $('.fromdate').datepicker('getDate'); 
     var d2 = $('.todate').datepicker('getDate'); 
     $('.fromdate').datepicker("option", "maxDate",d2); //new line   
     $('.todate').datepicker("option", "minDate",d1); // new line 
     var diff = 1; 
     if (d1 && d2) { 
      diff = diff + Math.floor((d2.getTime() - d1.getTime())/86400000); 
     } 
     $('.calculated').val(diff); 
     $('.minim').val(d1) 
    }  
$(".fromdate").datepicker({ 
       dateFormat : 'yy-mm-dd', 
       changeMonth: true, 
       changeYear: true, 
}); 
$('.todate').datepicker({ 
       dateFormat : 'yy-mm-dd', 
       changeMonth: true, 
       changeYear: true, 
       minDate: ($(".fromdate").is(":visible") && $(".todate").html() != ""? $('.todate').datepicker('getDate'): 'null'), // new line 
}); 
$('.fromdate,.todate').change(selector) 
}); 

2

看看这DEMO链接这将帮助你计算两个日期之间选择的天数,并能够选择一个日期范围。

$('.fromdate').datepicker().bind("change", function() { 
    var minValue = $(this).val(); 
    minValue = $.datepicker.parseDate("yy-mm-dd", minValue); 
    $('.todate').datepicker("option", "minDate", minValue); 
    calculate(); 
}); 
$('.todate').datepicker().bind("change", function() { 
    var maxValue = $(this).val(); 
    maxValue = $.datepicker.parseDate("yy-mm-dd", maxValue); 
    $('.fromdate').datepicker("option", "maxDate", maxValue); 
    calculate(); 
}); 

我希望这会帮助你。