Javascript 破损交货估算计算器

Javascript 破损交货估算计算器,javascript,jquery,html,css,jquery-ui-datepicker,Javascript,Jquery,Html,Css,Jquery Ui Datepicker,我希望有人能帮我弄清楚如何编写一个应用程序,让你可以使用jquery datepicker选择邮寄日期,从下拉列表中选择标准或头等舱配送,并计算预计配送日期窗口,标准为7-12天,头等舱为3-5天 当[number]天内的邮件接受字符串输入时,我让它工作,但当我为日期选择器添加代码时,它就坏了 我还需要将周末和假日排除在运费计算之外 以下是完整笔的链接: $'CalculateShippingetimate'。单击函数事件{ //阻止按钮“提交”和重新加载页面 违约事件; //捕获邮寄日期 v

我希望有人能帮我弄清楚如何编写一个应用程序,让你可以使用jquery datepicker选择邮寄日期,从下拉列表中选择标准或头等舱配送,并计算预计配送日期窗口,标准为7-12天,头等舱为3-5天

当[number]天内的邮件接受字符串输入时,我让它工作,但当我为日期选择器添加代码时,它就坏了

我还需要将周末和假日排除在运费计算之外

以下是完整笔的链接:

$'CalculateShippingetimate'。单击函数事件{ //阻止按钮“提交”和重新加载页面 违约事件; //捕获邮寄日期 var$mailingDate=$mailingDate.val; var$postageType=$postageType.val; var$shipStateShippingDuration=eval'data.shipTimes.+$postageType; var$totalShippingTime=parseInt$mailingDate+parseInt$shipStateShippingDuration; //创建日期 var日期=新日期; var month=date.getMonth+1; var day=date.getDate+parseInt$totalShippingTime; var year=date.getFullYear; 邮寄 邮资: 标准 头等舱
通过查看您的代码片段,您似乎正在尝试手动滚动JS Date框架中已经存在的许多功能

获得开始日期和发货天数后,您可以将这些天数相加以创建最终发货日期。从那里开始,在循环中,您可以逐日检查当前日期索引是否为工作日,是否使用date.getDay

这样,您可以检查周六[6]和周日[0],然后在最终日期的基础上添加所需的天数

我在下面的代码版本中加入了一些控制台调试,但没有添加代码假日。可能会检查假日是否使用数组或映射。获取一年的所有假日日期,然后让当前索引检查假日数组/映射,以查看是否有匹配项。如果有,请在最终日期上再添加一天

addDays的函数是从中提取出来的。它添加了一些解释,我想你会发现这些解释很有帮助

function addDays(date, days) {
 const copy = new Date(Number(date))
 copy.setDate(date.getDate() + days)
 return copy
}

// FINAL SHIPPING ESTIMATE

$('#calculateShippingEstimate').click(function( event ) {
  event.preventDefault();
  let mailingDateVal = $("#mailingDate").val();
  let shippingDuration = data.shipTimes[$("#postageType").val()];
  let mailingDate = new Date(mailingDateVal);

  console.log("final Date: " + addDays(mailingDate, shippingDuration));

  let finalDate = addDays(mailingDate, shippingDuration)

  let mailingDateIndex = new Date(mailingDate);
  while(mailingDateIndex <= finalDate) {
    console.log("current mailDateIndex: " + mailingDateIndex)

    if (mailingDateIndex === finalDate) {
     break;
    }

    // Weekend
    console.log(mailingDateIndex.getDay());
    if (mailingDateIndex.getDay() == 0 || mailingDateIndex.getDay() == 6) {
      console.log("weekend day hit! Adding day to final...")
      finalDate = addDays(finalDate, 1);
    }
    mailingDateIndex = addDays(mailingDateIndex, 1);
  }
});