2011-05-07 5 views
4

jQuery 날짜 선택 도구를 사용하여 시작 날짜 달력과 종료 날짜 달력을 만들려고합니다. 여기에 표시된 "기간"예제를 사용하고 있습니다. http://jqueryui.com/demos/datepicker/#date-rangejQuery datepicker로 특정 날짜 범위 만들기

시작 날짜는 오늘 날짜보다 빠를 수 없으며 종료 날짜는 선택한 시작 날짜보다 30 일 후부터 될 수 있습니다.

예를 들어 첫 번째 datepicker에서 5 월 17 일 시작일을 선택한 경우 두 번째 datepicker의 종료일은 5 월 18 일부터 6 월 18 일까지만 선택할 수 있습니다. 어떤 도움을 주시면 감사하겠습니다

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" />  
    <title>Untitled Document</title> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

<script type="text/javascript"> 
    $(function() { 
     var dates = $("#from, #to").datepicker({ 
      defaultDate: "+1w", 
      changeMonth: true, 
      numberOfMonths: 2, 
      onSelect: function(selectedDate) { 
       var option = this.id == "from" ? "minDate" : "maxDate", 
        instance = $(this).data("datepicker"), 
        date = $.datepicker.parseDate(
         instance.settings.dateFormat || 
         $.datepicker._defaults.dateFormat, 
         selectedDate, instance.settings); 
       dates.not(this).datepicker("option", option, date); 
      } 
     }); 
    }); 
    </script> 
    </head> 

<body> 
<div class="date"> 

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

</div><!-- End demo --> 

</html> 

:

여기 내 코드입니다. 감사!

답변

11

당신은 이동 : http://jsfiddle.net/c0mm0n/SJhmF/3/

$(function() { 
    $("#from, #to").datepicker({ 
     defaultDate: "+1w", 
     changeMonth: true, 
     numberOfMonths: 3, 
     onSelect: function(selectedDate) { 
      if(this.id == 'from'){ 
       var dateMin = $('#from').datepicker("getDate"); 
       var rMin = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 1); // Min Date = Selected + 1d 
       var rMax = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 31); // Max Date = Selected + 31d 
       $('#to').datepicker("option","minDate",rMin); 
       $('#to').datepicker("option","maxDate",rMax);      
      } 

     } 
    }); 
}); 
+0

거의 완벽! 옵션에 "minDate : new Date()"를 추가 했으므로 과거에는 선택할 수 없었습니다. 감사! – bigmike7801

+0

thx, 많은 도움이되었습니다. –

2

이 그것을 수행해야합니다

http://jsfiddle.net/abze4/

$(function() { 
    var fromDate = $("#from").datepicker({ 
     defaultDate: "+1w", 
     changeMonth: true, 
     numberOfMonths: 2, 
     minDate: new Date(), 
     onSelect: function(selectedDate) { 
      var instance = $(this).data("datepicker"); 
      var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings); 
      date.setDate(date.getDate()+30); 
      toDate.datepicker("option", "minDate", date); 
     } 
    }); 

    var toDate = $("#to").datepicker({ 
     defaultDate: "+1w", 
     changeMonth: true, 
     numberOfMonths: 2 
    }); 
}); 

기본적으로이 오늘 날짜의 minDate에서 설정합니다. 그런 다음 fromDate를 선택하면 toDate의 minDate가 선택한 날짜 +30으로 설정됩니다. 이

+0

이 좀했던 나는 그것이 시작 날짜부터 30 일을 회색으로 표시하고 그 이후 아무것도 선택할 수 ... 원하는 것을 반대. 그래도 고마워. – bigmike7801