Javascript JQuery Datepicker-基于当前时间设置MinDate
我使用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(函数(){
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
}