破损交货估算计算器

问题描述 投票:0回答:1

[我希望有人能帮助我找出如何编写应用程序的代码,该应用程序允许您使用jquery datepicker选择邮寄日期,从下拉列表中选择标准或一流送货,并计算预计的送货日期窗口(7-标准课程12天,头等舱3-5天。

[当“ Mailing in” [number]“ Days”接受字符串输入时,它起作用了,但是当我为datepicker添加代码时,它就坏了。

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

这里是完整笔的链接:https://codepen.io/allyjfuller/pen/oNXvwJL

$('#calculateShippingEstimate').click(function( event ) {
  
  //Prevent button from 'submitting' and reloading the page
  event.preventDefault();
  
  //Capture the mailing date
  var $mailingDate = $("#mailingDate").val();
  
  var $postageType = $("#postageType").val();
  var $shipStateShippingDuration = eval('data.shipTimes.' + $postageType);  
  var $totalShippingTime = parseInt($mailingDate) + parseInt($shipStateShippingDuration);
  
  //Create the date
  var date = new Date();
  var month = date.getMonth()+1;
  var day = date.getDate() + parseInt($totalShippingTime);
  var year = date.getFullYear();
<form>
  <section>
    <label>Mailing on</label>
    <input id="mailingDate" placeholder="number"></input>
  </section>
  <section>
    <label>Postage:</label>
    <select id="postageType">
      <option value="Standard">Standard</option>
      <option value="FirstClass">First-Class</option>
    </select>
  </section>
  <input class="button" id="calculateShippingEstimate" type="submit" value="Get Estimated Delivery Date"></input>
  <div class="results"></div>
</form>
javascript jquery html css jquery-ui-datepicker
1个回答
0
投票

浏览您的代码片段,似乎您想尝试推出JS Date框架中已经存在的许多功能。

一旦获得开始日期和运输天数,您可以将这些天加在一起以创建最终运输日期。从那里开始并在一个循环中,您可能一天又一天地检查当前日期索引是否为工作日(使用Date.getDay())。

因此,您可以检查星期六[6]和星期日[0],然后在最终日期的顶部添加所需的天数。

我在下面的控制台调试中包含了我的代码版本,但尚未添加代码假期。可以检查假期是否使用数组或地图。获取一年的所有假期日期,然后让当前索引检查假期数组/地图以查看是否有匹配项。如果有的话,请在截止日期后再增加一天。

addDays的功能从here中提取。它添加了一些说明,我认为会对您有所帮助。

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);
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.