如何链接两个datepicker,以便第一个datepicker上的开始日期是第二个datepicker上的最小日期?

时间:2015-10-08 05:14:08

标签: jquery datepicker getuikit

我正在使用UIKit网页框架(getuikit.com)

有什么方法可以使用两个日期选择器,以便第一个选定的开始日期与第二个日期选择器允许的最小日期相匹配? (主要是为了让它像酒店/航班预订一样工作)

以下是我在JQuery中尝试过的内容:

$("#startDate").blur(function() {
  var init = $("#startDate").val();
$("#endDate").attr("data-uk-datepicker","format:'DD/MM/YYYY', minDate:"+init+", maxDate:10");
  UIkit.datepicker("#endDate");
});

2 个答案:

答案 0 :(得分:0)

  

这是你想要的:
  您可以自定义代码作为您的应用程序!

     var $inDate = $("[name=outDate]");
    var $outDate = $("[name=inDate]");

$outDate.datepicker('setDate', new Date());
    $( ".datepicker" ).datepicker({
        dateFormat: 'yy-mm-dd',
        changeMonth: true,
        changeYear: true,
        minDate: 0,
        beforeShow : function(input, inst){
                if($inDate.is(input)){
                    var fromDate = $outDate.datepicker("getDate");
                    if(fromDate == null){
                        $outDate.datepicker("setDate", new Date());
                        fromDate  = new Date();
                    }
                    fromDate.setDate(fromDate.getDate() + 1);
                    inst.settings.minDate = fromDate;
                }
        },
        onSelect: function(dataText, inst){
                if($outDate.is(inst.input)){
                        var fromDate = $outDate.datepicker("getDate");
                        var toDate = $inDate.datepicker("getDate");
                        if(toDate && fromDate.getTime()>=toDate.getTime()){
                                toDate.setTime(fromDate.getTime());
                                toDate.setDate(toDate.getDate()+1);
                                $inDate.datepicker("setDate", toDate);					
                        }
                }
        },
      
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.min.js"></script>


<small class="labelFlightForm">Check-in Date</small><br />
<input type="text" name="inDate"class="form-control input-sm datepicker" id="datepicker"><br />
                 
<small class="labelFlightForm">Check-out Date</small><br />
  <input type="text" name="outDate" class="form-control input-sm datepicker"  id="returnDatepicker">

答案 1 :(得分:0)

首先,你应该使用hide.uk.datepicker事件而不是jQuery的模糊。

请注意,maxDate:10仅为您提供当前日期的天数偏移量。

然后你可以这样做:

HTML:

<form class="uk-form">
        <input type="" id="startDate" data-uk-datepicker="{format:'DD/MM/YYYY'}">
        <input type="" id="endDate">
    </form>

JS:

jQuery(document).ready(function() 
{
    jQuery("#startDate").on("hide.uk.datepicker", function (event) 
    {
        var init = jQuery(this).val();
        var dateArray = init.split("/");

        var day = parseFloat(dateArray[0]);
        var month = parseFloat(dateArray[1]);
        var year = parseFloat(dateArray[2]);

        var newDate = new Date(Date.UTC(year,month - 1,day));

        //add 10 days
        newDate.setDate(newDate.getDate() + 10);

        var newDay = newDate.getDate();
        var newMonth = newDate.getMonth() + 1;
        var newYear = newDate.getFullYear();

        var formatedDate = newDay + "." + newMonth + "." + newYear;

        UIkit.datepicker("#endDate", {format:"DD/MM/YYYY", minDate:init, maxDate:formatedDate});
    });
});

CSS:

.uk-datepicker-date-disabled
{
    color: gray;
}

应该如下所示: enter image description here