2014-01-15 71 views
1

之间的差我有2个datepickersJQuery的限制2个datepickers

$(function() { 
    $('#DateFrom').datepicker({ onSelect: showUser, minDate: -90, maxDate: "+1D" }); 
    }); 

    $(function() { 
    $('#DateTo').datepicker({ onSelect: showUser, minDate: -90, maxDate: "+1D" }); 
    }); 

和这些都为日期选择器2个的HTML输入

<input type="text" class="datepicker" name="DateFrom" id="DateFrom" /> 

<input type="text" class="datepicker" name="DateTo" id="DateTo" /> 

我需要限制的天,用户数可以根据选择的日期来选择。我想能够限制它到7天。

因此,如果用户选择1/1/14,那么他们应该只能够选择最多1/7/14,因此从1/1/14到1/7/14的任何日期。

我猜的理论是使用DateTo的ONSELECT并检查DateFrom的选择是什么,然后更改maxDate是从DateFrom选择7天。

我得到的总体思路,我知道如何选择已选定日期:

var StartDate = $("#DateFrom").datepicker("getDate"); 

但多数民众赞成所有我能正是DeCypher。

的ONSELECT两个datepickers电话:

function showUser() { 
    // Retrieve values from the selects 
    var DateFrom = document.getElementById('DateFrom').value; 
    var DateTo = document.getElementById('DateTo').value; 
    var StartDate = $("#DateFrom").datepicker("getDate"); 

    if (DateFrom=="" || DateTo == "") { 
     document.getElementById("txtHint").innerHTML=""; 
     return; 
    } 

    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } else {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
     } 
    } 

    xmlhttp.open("GET","StreetHailDrivers.php?DateFrom="+DateFrom+"&DateTo="+DateTo,true); 
    xmlhttp.send(); 
} 

我能摆在那的日期选择器的maxDate限制?

+0

没”你只是问这个? – adeneo

+0

我做过了,但是id确实得到了downvoted并且放在了某个地方看,而不是问这个问题。 – Mike

回答

2

像这样的事情

$(function() { 
    $('#DateFrom').datepicker({ 
     onSelect: function() { 
      var date = $('#DateFrom').datepicker('getDate'); 
      date.setTime(date.getTime() + (1000*60*60*24*6)); 
      $('#DateTo').datepicker('option', 'maxDate', date); 
      $('#DateTo').datepicker('option', 'minDate', $('#DateFrom').datepicker('getDate')); 
      showUser(); 
     }, 
     minDate: -90, 
     maxDate: "+1D" 
    }); 

    $('#DateTo').datepicker({ 
     onSelect: showUser, 
     minDate: -90, 
     maxDate: "+1D" 
    }); 
}); 

FIDDLE

1

备选建议:

如果您被限制一天,他们可以在“TO”日期选择器挑仅为1天,那么为什么有第二个日期选择呢?只需从FROM datepicker日期计算7天并将其显示为文本。愚蠢的是,当用户选择一个日期时,只有一个选项。

+0

很确定他的意思是说他们只能选择7天或以后的日期 – Oak

+0

我看到了混乱,我会编辑qn。 – Mike

0

一个小建议,尝试找到一个jQuery范围选取器。他们已经包含了一些这些乏味的功能。去谷歌和搜索只是为您提供了大量的选择。

等。https://github.com/longbill/jquery-date-range-picker

回到虽然这个问题,你可以把一个回调函数对“DateTo在“DateFrom”的OnClose“,所以每当日期改变,你会改变“的minDate” '以及。

0

使用beforeShow参数修改TominDate,然后简单地使用日期对象和+7From日期选择一个星期日期:

$("#to").datepicker({ 
    defaultDate: "+1w", // set the default to 1 week from today 

    beforeShow: function() { 
     var date = $('#from').datepicker('getDate'); // From date 
     date.setDate(date.getDate() + 7);    // 7 days after From date 
     $("#to").datepicker("option", "minDate", date); // set minDate to from+7 
    } 
}); 

Fiddle