Jquery ui datepicker 设置日期范围,如只能隔3天

最近的后台项目前端使用了jquery ui 日历控件自然就使用了jquery ui 的   datepicker

后台数据比较好大,一般是千万级的和百万级的关联,查询会很慢,所以后加想多加些过滤条件,其中时间要设置为必选,

产品要叫日历控件做成只能做3天之内的查询,且日历控件要做成这样的要求,如果前一个日历控制选择了2013年9月1号

后面的日历控件只能选择2013年9月1号,2013年9月2号,2013年9月3号,其他的全部要不能选,本来想叫他给提示的,领导非要这么干

真是领导一句话,码工辛苦好几年啊。。。好吧还好jquery ui 的日历控件提供了这个功能,很强大

首先去官网上(http://jqueryui.com/download/#!version=1.9.2)下载jquery ui 包 我用的是1.92版本

下载好了之后

引入<link href="jquery-ui/1.9.2/css/smoothness/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css" />

<script type="text/javascript" src="jquery-ui/1.9.2/js/jquery-ui-1.9.2.custom.js"></script>

<script type="text/javascript" src="jquery-ui/1.9.2/datepicker-init.js"></script>

<script type="text/javascript"> 
$(function(){
   var dates = $("#startDate,#endDate");
    var option;
    var targetDate;
    var optionEnd;
    var targetDateEnd;
    dates.datepicker({
        showButtonPanel:false,
        onSelect: function(selectedDate){  
          if(this.id == "startDate"){
            // 如果是选择了开始时间(startDate)设置结束时间(endDate)的最小时间和最大时间
            option = "minDate"; //最小时间
            var selectedTime = getTimeByDateStr(selectedDate);
            var minTime = selectedTime;
	    //最小时间 为开第一个日历控制选择的时间
            targetDate = new Date(minTime); 
            //设置结束时间的最大时间
            optionEnd = "maxDate";
	    //因为只能做三天内的查询  所以是间隔2天  当前时间加上2*24*60*60*1000
            targetDateEnd = new Date(minTime+2*24*60*60*1000);
          }else{
            // 如果是选择了结束时间(endDate)设置开始时间(startDate)的最小时间和最大时间
            option = "maxDate"; //最大时间
            var selectedTime = getTimeByDateStr(selectedDate);
            var maxTime = selectedTime;
            targetDate = new Date(maxTime);
            //设置最小时间 
            optionEnd = "minDate";
            targetDateEnd = new Date(maxTime-2*24*60*60*1000);
          }
          dates.not(this).datepicker("option", option, targetDate);  
          dates.not(this).datepicker("option", optionEnd, targetDateEnd);  
        }
    });


// 检查起始时间不能超过3天
function checkTimeInOneMonth(startDate, endDate){
	var startTime = getTimeByDateStr(startDate);
    var endTime = getTimeByDateStr(endDate);
    if((endTime - startTime) > 2*24*60*60*1000){
        return false;
    }
    return true;
}


//根据日期字符串取得其时间
function getTimeByDateStr(dateStr){
    var year = parseInt(dateStr.substring(0,4));
    var month = parseInt(dateStr.substring(5,7),10)-1;
    var day = parseInt(dateStr.substring(8,10),10);
    return new Date(year, month, day).getTime();
}
</script> 
<input type="text" value="" name="startDate"  readonly="true" id="startDate" title="日期范围不能大于3天"/>
<input type="text" value="" name="endDate"  readonly="true" id="endDate" title="日期范围不能大于3天"/>




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值