Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js日期选择器-允许非连续天数_Javascript_Datepicker - Fatal编程技术网

Javascript js日期选择器-允许非连续天数

Javascript js日期选择器-允许非连续天数,javascript,datepicker,Javascript,Datepicker,我想限制用户只选择每月的第一个和第三个星期一。我们只有在这几天才招募志愿者,所以我想尽可能地限制错误的日期选择 我不是一个js程序员,但我已经设法修改了一些我在网上找到的代码,允许每个月的第一个或第三个星期一使用,但我不知道如何允许这两个 以下是我第一个星期一的代码: var firstMonday = new Date(date); var mondays=0; firstMonday.setDate(1); while (mondays < 1) { firstMonday.

我想限制用户只选择每月的第一个和第三个星期一。我们只有在这几天才招募志愿者,所以我想尽可能地限制错误的日期选择

我不是一个js程序员,但我已经设法修改了一些我在网上找到的代码,允许每个月的第一个或第三个星期一使用,但我不知道如何允许这两个

以下是我第一个星期一的代码:

var firstMonday = new Date(date);
var mondays=0;
firstMonday.setDate(1);

while (mondays < 1) {
    firstMonday.setDate(firstMonday.getDate() + 1);
    if (firstMonday.getDay() == 1) {
        mondays++;
    }
}
var result = date.getDate() != firstMonday.getDate();
var firstMonday=新日期(日期);
var-mondays=0;
第一个星期一。设定日期(1);
而(星期一<1){
firstMonday.setDate(firstMonday.getDate()+1);
if(firstMonday.getDay()==1){
周一++;
}
}
var result=date.getDate()!=firstMonday.getDate();

我想这就是你要问的。这项职能归功于贾布

//测试:本月的第一个星期一
//结果:正确
//var日期=[新日期(2017,8,4)];
//考试:本月第三个星期一
//结果:正确
//var日期=[新日期(2017,8,18)];
//测试:本月第一和第三个星期一
//结果:正确
var日期=[新日期(2017,8,4),新日期(2017,8,18)];
//测试:本月的第一个星期一、第三个星期一和随机日期
//结果:错误
//var日期=[新日期(2017,8,4)、新日期(2017,8,18)、新日期(2017,8,22)];
警报(验证(日期));
功能验证(日期){
var valid=true;
var mondays=getMondays();
var firstMonday=mondays[0].setHours(0,0,0,0);
var thirdMonday=周一[2]。设定小时数(0,0,0,0);
如果(日期和日期长度>0){
对于(变量i=0;i}
我想这就是你要问的。这项职能归功于贾布

//测试:本月的第一个星期一
//结果:正确
//var日期=[新日期(2017,8,4)];
//考试:本月第三个星期一
//结果:正确
//var日期=[新日期(2017,8,18)];
//测试:本月第一和第三个星期一
//结果:正确
var日期=[新日期(2017,8,4),新日期(2017,8,18)];
//测试:本月的第一个星期一、第三个星期一和随机日期
//结果:错误
//var日期=[新日期(2017,8,4)、新日期(2017,8,18)、新日期(2017,8,22)];
警报(验证(日期));
功能验证(日期){
var valid=true;
var mondays=getMondays();
var firstMonday=mondays[0].setHours(0,0,0,0);
var thirdMonday=周一[2]。设定小时数(0,0,0,0);
如果(日期和日期长度>0){
对于(变量i=0;i}
谢谢,但我不确定上述方法是否有效,因为我正在寻找一个js代码答案-我将把它留给其他人解决

…我同时发现了。非常感谢Fabrik的Hugh所做的以下工作:

var thisdate = new Date(date);
thisdate.setHours(0,0,0,0);

var day = 1; // monday
var nth = 1; // first

var first = new Date(thisdate.getFullYear(), thisdate.getMonth(), 1),
  add = (day - first.getDay() + 7) % 7 + (nth - 1) * 7;
first.setDate(1 + add);

nth = 3; // third

var third = new Date(thisdate.getFullYear(), thisdate.getMonth(), 1),
  add = (day - third.getDay() + 7) % 7 + (nth - 1) * 7;
third.setDate(1 + add);

//console.log(thisdate + ', ' + first + ', ' + third);

var result = (first.getTime() !== thisdate.getTime()) && (third.getTime() !== thisdate.getTime());

谢谢,但我不确定上述方法是否有效,因为我正在寻找一个js代码的答案——我将把它留给其他人来解决

…我同时发现了。非常感谢Fabrik的Hugh所做的以下工作:

var thisdate = new Date(date);
thisdate.setHours(0,0,0,0);

var day = 1; // monday
var nth = 1; // first

var first = new Date(thisdate.getFullYear(), thisdate.getMonth(), 1),
  add = (day - first.getDay() + 7) % 7 + (nth - 1) * 7;
first.setDate(1 + add);

nth = 3; // third

var third = new Date(thisdate.getFullYear(), thisdate.getMonth(), 1),
  add = (day - third.getDay() + 7) % 7 + (nth - 1) * 7;
third.setDate(1 + add);

//console.log(thisdate + ', ' + first + ', ' + third);

var result = (first.getTime() !== thisdate.getTime()) && (third.getTime() !== thisdate.getTime());

是否为日期选择器提供输入验证的代码?是否为日期选择器提供输入验证的代码?