Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 JQuery Datepicker-基于当前时间设置MinDate_Javascript_Jquery_Datepicker - Fatal编程技术网

Javascript JQuery Datepicker-基于当前时间设置MinDate

Javascript JQuery Datepicker-基于当前时间设置MinDate,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,我使用JQuery Datepicker为客户选择交货日期。我希望能够检查客户是否在中午前订购,如果是,第二天是否可以送货。如果他们在中午后订购,则第二天交货不可用,因此当天不可选择 我有一些代码来检查当前时间,但是如何在顶部的设置中将这个值添加到MinDate中 谢谢大家! 在下面选择交货日期: jQuery(函数(){ jQuery(“#date”).datepicker({ //minDate:新日期(((新日期).getTime()+49*60*60*1000)), 在中午之前检

我使用JQuery Datepicker为客户选择交货日期。我希望能够检查客户是否在中午前订购,如果是,第二天是否可以送货。如果他们在中午后订购,则第二天交货不可用,因此当天不可选择

我有一些代码来检查当前时间,但是如何在顶部的设置中将这个值添加到MinDate中

谢谢大家!



在下面选择交货日期:

jQuery(函数(){ jQuery(“#date”).datepicker({ //minDate:新日期(((新日期).getTime()+49*60*60*1000)), 在中午之前检查, maxDate:“+2M”//最多显示2个月 日期格式:“日/月/年”, 展会日期前:可用的交货日期 } ); }); /*=============检查时间==========*/ //如果时间在中午12点之前,则提供次日交货 中午前功能检查(下一天交付){ var startTime='12:00am'; var endTime='12:00 PM'; var curr_time=getval(); 如果(24小时当前时间)>24小时开始时间&24小时当前时间<24小时结束时间){ //中午12点前-第二天交货 var nextDayDelivery='+1d'; }否则{ //下午12点后-第二天交货不可用 var nextDayDelivery='+2d'; } 功能获取24小时(时间){ var小时数=数量(time.match(/^(\d+/)[1]); var AMPM=time.match(/\s(.*)$/)[1]; 如果(AMPM==“PM”&&hours=12){ 后缀=“PM”; 小时=小时-12; } 如果(小时==0){ 小时=12; } var当前时间=小时+“:“+分钟+”+后缀; 返回当前时间; } } /*===============使星期日始终不可用==========*/ 功能可用\交付\日期(日期){ var sunday=0;//无法交付 var mon=1 var-tue=2; var=3; var-thu=4; var-fri=5; var-sat=6; var day_of_week=date.getDay(); var not_sun=一周中的第天>0; 如果(不是太阳){ var day=date.getDate(); 返回[true',]; } 否则{ //所有其他-不允许 返回[false],“当天无法交货”]; } }
您已经完成了。您只需向正在检查是否为正午的函数添加一个返回。如果您想通知客户现在可以一天发货,可以通过在函数中添加日志来实现。下面是您修改的代码:

中午前功能检查(下一天交付){
var startTime='12:00am';
var endTime='12:00 PM';
var curr_time=getval();
如果(24小时当前时间)>24小时开始时间&24小时当前时间<24小时结束时间){
//中午12点前-第二天交货
var nextDayDelivery='+1d';
$(“#log”).html('第二天可以送货!中午之前下单!');//向用户显示响应
}否则{
//下午12点后-第二天交货不可用
var nextDayDelivery='+2d';
$(“#log”).html('第二天交货不可用!已过中午:(');//向用户显示响应
}
返回下一天交货;
}

此外,您还可以轻松地分离函数。它更易于阅读,并且您可以始终从函数中调用函数。希望这有帮助!

下一天交付之前,在
if else
块中删除
var
,因为您将重新声明它。然后返回
下一天交付
。此外,修复mis的一个好主意在
getVal()
方法中使用分号

function checkBeforeNoon(nextDayDelivery) {

    var startTime = '12:00 AM';
    var endTime = '12:00 PM';

    var curr_time = getval();


    if (get24Hr(curr_time) > get24Hr(startTime) && get24Hr(curr_time) < get24Hr(endTime)) {
        // before 12pm - next day delivery available
        nextDayDelivery = '+1d';  // REMOVE var FROM HERE

    } else {
        // after 12pm - next day delivery unavailable
        nextDayDelivery = '+2d';  // REMOVE var FROM HERE
    }

    function get24Hr(time) {
        var hours = Number(time.match(/^(\d+)/)[1]);
        var AMPM = time.match(/\s(.*)$/)[1];
        if (AMPM == "PM" && hours < 12) hours = hours + 12;
        if (AMPM == "AM" && hours == 12) hours = hours - 12;

        var minutes = Number(time.match(/:(\d+)/)[1]);
        hours = hours * 100 + minutes;
        console.log(time + " - " + hours);
        return hours;
    }

    function getval() {
        // ADD MISSING SEMI-COLONS ON THE FOLLOWING 3 LINES
        var currentTime = new Date();
        var hours = currentTime.getHours();
        var minutes = currentTime.getMinutes();

        if (minutes < 10) minutes = "0" + minutes;

        var suffix = "AM";
        if (hours >= 12) {
            suffix = "PM";
            hours = hours - 12;
        }
        if (hours == 0) {
            hours = 12;
        }
        var current_time = hours + ":" + minutes + " " + suffix;

        return current_time;
    }

    return nextDayDelivery;  // ADD RETURN STATEMENT
}
中午前功能检查(下一天交付){
var startTime='12:00am';
var endTime='12:00 PM';
var curr_time=getval();
如果(24小时当前时间)>24小时开始时间&24小时当前时间<24小时结束时间){
//中午12点前-第二天交货
nextDayDelivery='+1d';//从此处删除变量
}否则{
//下午12点后-第二天交货不可用
nextDayDelivery='+2d';//从此处删除变量
}
功能获取24小时(时间){
var小时数=数量(time.match(/^(\d+/)[1]);
var AMPM=time.match(/\s(.*)$/)[1];
如果(AMPM==“PM”&&hours<12)hours=hours+12;
如果(AMPM==“AM”&&hours==12)小时数=hours-12;
var minutes=Number(time.match(/:(\d+/)[1]);
小时=小时*100+分钟;
控制台日志(时间+“-”+小时);
返程时间;
}
函数getval(){
//在以下3行中添加缺少的分号
var currentTime=新日期();
var hours=currentTime.getHours();
var minutes=currentTime.getMinutes();
如果(分钟<10)分钟=“0”+分钟;
var suffix=“AM”;
如果(小时数>=12){
后缀=“PM”;
小时=小时-12;
}
如果(小时==0){
小时=12;
}
var当前时间=小时+“:“+分钟+”+后缀;
返回当前时间;
}
return nextDayDelivery;//添加return语句
}

您的设置
minDate
作为函数而不是返回值,您需要调用您的函数…
minDate:checkbeforeoon(),
谢谢,但这也不起作用
beforeShowDay:available\u delivery\u dates()
这实际上完全破坏了日期选择器。它只适用于“可用的交付日期”和minDate为“+2D”的情况,但此minDate显然不是动态的。您不会从
checkBeforeNoon()返回任何内容。
感谢这一点,这很有帮助,但它会在IE和Safari中返回一个错误“无法获取未定义或空引用”函数get24Hr(time)的属性“1”-这是您看到的吗?哦-这是因为我试图使用服务器日期和时间,而不是您使用的客户端浏览器时间…感谢这一点,这很有帮助,但它在IE和Safari中返回了一个错误”无法获取未定义或空引用“函数get24Hr(时间)”的属性“1”
function checkBeforeNoon(nextDayDelivery) {

    var startTime = '12:00 AM';
    var endTime = '12:00 PM';

    var curr_time = getval();


    if (get24Hr(curr_time) > get24Hr(startTime) && get24Hr(curr_time) < get24Hr(endTime)) {
        // before 12pm - next day delivery available
        nextDayDelivery = '+1d';  // REMOVE var FROM HERE

    } else {
        // after 12pm - next day delivery unavailable
        nextDayDelivery = '+2d';  // REMOVE var FROM HERE
    }

    function get24Hr(time) {
        var hours = Number(time.match(/^(\d+)/)[1]);
        var AMPM = time.match(/\s(.*)$/)[1];
        if (AMPM == "PM" && hours < 12) hours = hours + 12;
        if (AMPM == "AM" && hours == 12) hours = hours - 12;

        var minutes = Number(time.match(/:(\d+)/)[1]);
        hours = hours * 100 + minutes;
        console.log(time + " - " + hours);
        return hours;
    }

    function getval() {
        // ADD MISSING SEMI-COLONS ON THE FOLLOWING 3 LINES
        var currentTime = new Date();
        var hours = currentTime.getHours();
        var minutes = currentTime.getMinutes();

        if (minutes < 10) minutes = "0" + minutes;

        var suffix = "AM";
        if (hours >= 12) {
            suffix = "PM";
            hours = hours - 12;
        }
        if (hours == 0) {
            hours = 12;
        }
        var current_time = hours + ":" + minutes + " " + suffix;

        return current_time;
    }

    return nextDayDelivery;  // ADD RETURN STATEMENT
}