由于项目需求,需要在进行日期选择后,对星期也进行对应的校验。举个简单的例子:
假如选择开始日期为2019-3-19,结束时间为:2019-3-20。分别为星期二,星期三。则对应的星期选项,就不能出现其他的星期。
```
//当开始日期,结束日期input框内容发生改变时
$("#end_date,#start_date").change('input',function () {
//首先将所有的input框都添加不可选中状态,并且移除所有checked
$("input[id^='week_']").attr("disabled","disabled");
$("input[id^='week_']").removeAttr("checked");
//获取开始日期
var startDate = $("#start_date").val();
var sTime=new Date(Date.parse(startDate));
var startMills = sTime.getTime();//开始日期的毫秒数
var startDay = sTime.getDay();//开始日期为周几
var endDate = $("#end_date").val(); //结束日期
var eTime=new Date(Date.parse(endDate));
var endDay = eTime.getDay();//结束日期为周几
var endMills = eTime.getTime();//结束日期的毫秒数
var diff = endMills - startMills;
var days = diff/(1000*60*60*24);//开始日期至结束日期共多少天
var w = Math.round(Math.ceil(((days+startDay+(7-endDay))/7.0)));//给定时间内,共有多少个星期
/*
* 首先我们要根据days的值来区分不同的情况。如上days为开始日期到结束日期的总天数。
* 1.days大于8天,则一定会包含所有的星期
* 2.days小于8天,则需要区分开处理
* ps:因为根据getDay()得出的星期天为0.需要进行如下处理
* */
if (days<8){
for (var i = startDay; i < startDay+days+1; i++) {
if (i<=7){
$("#week_"+i+"").removeAttr("disabled");
}
if (i>=8){
$("#week_"+(i-7)+"").removeAttr("disabled");
}
}
}else {
$("input[id^='week_']").removeAttr("disabled");
}
});
``
以上是自己临时参考资料写的简单实现,记录下,希望可以帮到大家。