JQuery datepickers-从开始日期开始设置结束日期

时间:2014-12-31 12:24:49

标签: javascript jquery jquery-ui datepicker

有两个Jquery日期选择器正在使用,StartDate和EndDate

<input id="StartDate" class="datepicker setNext hasDatepicker" type="text" value="13/02/2015" name="StartDate">
<input id="EndDate" class="datepicker hasDatepicker" type="text" value="15/02/2015" name="EndDate">

当选择StartDate日期选择器时,我希望EndDate日期选择器为StartDate + 1天,并使其在EndDate中不能在StartDate中选择早期日期。

我有这段代码:

$(function () {
    $(".datepicker").datepicker({
        dateFormat: 'dd/mm/yy',
        onSelect: function( selectedDate ) {
            if(this.id == 'StartDate') {
                var minDate = selectedDate + 1;
                $('#to').datepicker("option", "minDate", minDate);

            }
        }
   });
});

所以它点击onSelect确定,但是然后在日期中添加1并不起作用(我只是在日期字符串中输入1,所以&#39; 31/12 / 20141&#39; )。

我还在OnSelect中尝试了以下内容,假设selectedDate是一个不是日期类型的字符串:

                var minDate = new Date(selectedDate);
                var tomorrow = new Date();
                tomorrow.setDate(minDate.getDate() + 1);
                $('#to').datepicker("option", "minDate", tomorrow);

minDate最终成为无效日期,明天也是如此。我无法解决如何从字符串中设置日期的问题。尝试以下方面的事情:

var minDate = selectedDate.getDate();

给我一​​个&#39; Uncaught TypeError:undefined不是函数&#39;。

使用JQuery 1.11.1,英国日期格式为dd / mm / yyyy。

3 个答案:

答案 0 :(得分:1)

如果你想改变另一个日期选择器的日期选择日期,你可以这样做:

注意,selectedDate的格式为dd / mm / YYYY,这不是Date构造函数中使用的有效字符串日期格式。然后你要解析它。

        var arr = selectedDate.split("/");
        var date = new Date(arr[2]+"-"+arr[1]+"-"+arr[0]);
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();
        var minDate = new Date(y, m, d + 1);
        $("#EndDate").datepicker('setDate', minDate);

这里有一个工作示例fiddle

答案 1 :(得分:1)

这里我让用户只选择10天的间隔..你可以根据你的要求进行修改。

&#13;
&#13;
$(document).ready(function() {
    var minDate ;
    var maxDate;
    var mDate
    var j = jQuery.noConflict();
    j( "#startTime" ).datepicker({
    onSelect: function() {
    minDate = j( "#startTime" ).datepicker("getDate");
    var mDate = new Date(minDate.setDate(minDate.getDate()));
    maxDate = new Date(minDate.setDate(minDate.getDate() + 10));
j("#endTime").datepicker("setDate", maxDate);
j( "#endTime" ).datepicker( "option", "minDate", mDate);
j( "#endTime" ).datepicker( "option", "maxDate", maxDate);
}
});
var tdate = new Date();
var ddate = new Date(tdate.setDate(tdate.getDate() + 10));
j("#startTime").datepicker("setDate", new Date());
j( "#endTime" ).datepicker();
j("#endTime").datepicker("setDate",ddate);
  });
&#13;
 <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script><div>Please Select Dates:</div>
	 <p>Strat Date:<input id ="startTime" type="text" ></input></p>
	 <p>End Date:<input id ="endTime" type="text" ></input></p>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用 setDate getDate

示例:

<input id="StartDate" class="datepicker setNext hasDatepicker" type="text" value="13/02/2015" name="StartDate">
<script>
function convertInputtoDate(){
    var input = document.getElementById("StartDate").value;
    var date = input.split('/');
    var selectdate = new Date(date[2], date[1], date[0]);

    return selectdate;
}
var today = convertInputtoDate();
var tomorrow = new Date(convertInputtoDate());
tomorrow.setDate(today.getDate() + 1);
alert('Today : ' + today + ' Tommorow :' + tomorrow.toLocaleString());
</script>

如果要更改日期格式,请使用:

tomorrow.toLocaleString(); // output will be : d/m/Y H:M:S

并将输入转换为日期:

function convertInputtoDate(){
    var input = document.getElementById("StartDate").value;
    var date = input.split('/');
    var selectdate = new Date(date[2], date[1], date[0]);

    return selectdate;
}