Javascript 根据到达日期和节目持续时间计算出发日期
WordPress E&p插件评论中的学习示例 我自己也发现了一些bug,但仍然无法使代码正常工作 案例:从选择字段(5 | 7 | 14 | 30 | 60)中选择到达日期(日期选择器)和节目持续时间。生成出发日期 这个插件所有者的代码根本不需要任何单词Javascript 根据到达日期和节目持续时间计算出发日期,javascript,jquery,momentjs,Javascript,Jquery,Momentjs,WordPress E&p插件评论中的学习示例 我自己也发现了一些bug,但仍然无法使代码正常工作 案例:从选择字段(5 | 7 | 14 | 30 | 60)中选择到达日期(日期选择器)和节目持续时间。生成出发日期 这个插件所有者的代码根本不需要任何单词 jQuery(document).ready(function(){ jQuery('[data-title="Departure"]').on('change',checkDates); jQuery('[data-title="P
jQuery(document).ready(function(){
jQuery('[data-title="Departure"]').on('change',checkDates);
jQuery('[data-title="Program"]').on('change',checkDates);
});
function checkDates(){
var nbDays = jQuery('[data-title="Program"] option:selected').attr('data-price');
var startDate = moment(jQuery('[data-title="Arrival"]').datetimepicker('getDate'));
var endDate = startDate.subtract(nbDays,'days');
jQuery('[data-title="Departure"]').datetimepicker('setDate',endDate.toDate());
}
从第一种观点来看,我发现他使用了减法
而不是加法
我使用和
平等
var startdate = moment().subtract(1, "days");
这是我的版本:
jQuery(document).ready(function(){
jQuery('[data-title="Arrival"]').on('change',checkDates);
jQuery('[data-title="Program"]').on('change',checkDates);
});
function checkDates(){
var nbDays = jQuery('[data-title="Program"] option:selected').attr('data-price');
var startDate = moment(jQuery('[data-title="Arrival"]').datetimepicker('getDate'));
var endDate = moment().add(nbDays,'days');
jQuery('[data-title="Departure"]').datetimepicker('setDate',endDate.toDate());
}
仍然没有重新计算出发日期。单击并正确计算天数我认为您得到了错误的结束日期,因为您正在执行
时刻()。添加(…)
,它获取脚本执行时的当前日期(与日期.now()相等)
尝试使用startDate变量,并使用moment prototype add:
var endDate=startDate.add(nbDays,'days')代码>
这将使moment在startDate中添加额外的天数,而不是当前日期
最终结果:
function checkDates(){
var nbDays = jQuery('[data-title="Program"] option:selected').attr('data-price');
var startDate = moment(jQuery('[data-title="Arrival"]').datetimepicker('getDate'));
var endDate = startDate.add(nbDays,'days');
jQuery('[data-title="Departure"]').datetimepicker('setDate',endDate.toDate());
}
我认为您得到了错误的结束日期,因为您正在执行moment()。添加(…)
,它获取脚本执行时的当前日期(与date.now()
)
尝试使用startDate变量,并使用moment prototype add:
var endDate=startDate.add(nbDays,'days')代码>
这将使moment在startDate中添加额外的天数,而不是当前日期
最终结果:
function checkDates(){
var nbDays = jQuery('[data-title="Program"] option:selected').attr('data-price');
var startDate = moment(jQuery('[data-title="Arrival"]').datetimepicker('getDate'));
var endDate = startDate.add(nbDays,'days');
jQuery('[data-title="Departure"]').datetimepicker('setDate',endDate.toDate());
}
attr('data-price')
正确吗?仅从属性的命名来看,它似乎与日期无关。要检查每个值是否都是您期望的值,您可以console。记录变量并在浏览器控制台中检查它们。这是字段的名称,存储的天数如7 | 14 | 30等。attr('data-price')
正确吗?仅从属性的命名来看,它似乎与日期无关。要检查每个值是否都是您期望的值,您可以控制台。记录变量并在浏览器控制台中检查它们。这是一个文件名,存储了7 | 14 | 30等天数。您现在可以正确计算日期,但仍然不重新计算。更改。只有当我一步一步地修改这两个参数几次,你才可以正确地计算日期,但仍然不会在.change上重新计算。只要我一步一步地修改两个参数几次