2013-09-14 4 views
0

Я использую jQuery datepicker для выбора диапазонов дат. Код ниже получает начало input1 и конец input2 даты диапазона дат. Но как мне просто получить даты между ними? Спасибо вам за ваши предложения!jquery datepicker получить диапазон дат

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <link type="text/css" href="../demoengine/demoengine.css" rel="stylesheet"> 
    <script type="text/javascript" src="../demoengine/demoengine.js" async defer></script> 
    <title>jQuery UI Datepicker: Using Datepicker to Select Date Range</title> 
    <link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/themes/ui-darkness/jquery-ui.css" rel="stylesheet"> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js"></script> 
    <style type="text/css"> 
     .dp-highlight .ui-state-default { 
      background: #484; 
      color: #FFF; 
     } 
    </style> 
</head> 
<body> 
    <div id="datepicker"></div> 
    <p> 
     Dates: 
     <input type="text" id="input1" size="10"> 
     <input type="text" id="input2" size="10"> 
    </p> 
    <script type="text/javascript"> 
     $(function() { 
      $("#datepicker").datepicker({ 
       beforeShowDay: function(date) { 
        var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input1").val()); 
        var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input2").val()); 
        return [true, date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? "dp-highlight" : ""]; 
       }, 
       onSelect: function(dateText, inst) { 
        var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input1").val()); 
        var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input2").val()); 
        if (!date1 || date2) { 
         $("#input1").val(dateText); 
         $("#input2").val(""); 
         $(this).datepicker("option", "minDate", dateText); 
        } else { 
         $("#input2").val(dateText); 
         $(this).datepicker("option", "minDate", null); 
        } 
       } 
      }); 
     }); 
    </script> 
</body> 
</html> 

ответ

0

Чтобы получить даты между датой 1 и датой 2, вы можете просто добавить один день в цикле, пока не достигнете конечной даты. Объект date предоставляет метод setDate, который позволяет выйти за пределы месяца (например, 32 августа и просто обернуть его до 1 сентября для вас).

for(; date1 < date2; date1.setDate(date1.getDate() + 1)) { 
    alert(date1); 
} 
Смежные вопросы