I'm trying to build a calculator that calculates various dates based on a user's input. The user selects the date of when a document was issued and then 2 things need to happen:
- The expiry date is calculated by adding X number of days to the date issued and displayed to the user
- The recommended application date is calculated based on the expiry date minus X number of days
The first one I got working (not in a very elegant way but it works for this part) The second part (recommended application date), I can't get to work. I've done a lot of research and can't find a solution. (I'm a beginner)
I'm thinking maybe "onchange" is perhaps not the right event but I can't find information on another event that applies to this situation. Or is it an issue with how the functions are structured? Or something else completely? I have also tried moment.js and a few other libraries but what I have in the codepen below is what have gotten me the furthest thus far.
The codepen with everything is here: https://codepen.io/locheia1985/pen/XWBMGXZ
And here is the code:
function setSecondDate() {
  var days = document.getElementById('select').value;
  var date = new Date(document.getElementById('date1').value);
  date.setDate(date.getDate() + parseInt(days));
  document.getElementById('date2').valueAsDate = date;
}
function setThirdDate() {
  var days3 = document.getElementById('select2').value;
  var date2 = new Date(document.getElementById('date2').value);
  date2.setDate(date2.getDate() - parseInt(days3));
  document.getElementById('date3').valueAsDate = date3;
  console.log(date2);
}body
 {
  font-family:sans-serif;
  background: #dde1e7;
  min-height: 100vh;
}
.center,.content
{
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
}
.click-me
{
  display:block;
  width:160px;
  height:50px;
  background: #dde1e7;
  box-shadow: -3px -3px 7px #fffdfdcc,3px 3px 5px rgba(94, 104, 121, 0.342);
  text-align:center;
  font-size:22px;
  line-height:50px;
  cursor:pointer;
}
#click
{
  display:none;
}
.click-me:hover
{
  color: #0a5878;
}
.content
{
  visibility:hidden;  
  width: 330px;
  height: auto;
  background: #dde1e7;
  padding: 30px 35px 40px;
  box-sizing: border-box;
  border-radius: 5px;
}
#temp
{
  position:absolute;
  right:10px;
  top:20px;
  font-size:25px;
  background: #dde1e7;
  padding: 3px;
  padding-left: 11px;
  padding-right: 11px;
  border-radius: 50%;
  cursor:pointer;
}
#click:checked~.content
{
  opacity:1;
  visibility:visible;
}
.text
{
  font-size: 30px;
  color: #000000;
  font-weight: 600;
  text-align: center;
  letter-spacing: 2px;
}
form
{
  margin-top: 40px;
}
label
{
  display: block;
  margin-top: 30px;
  font-size: 16px;
  font-weight: 500;
}
input
{
  display: block;
  height: 43px;
  width: 100%;
  background-color: rgba(255,255,255,0.07);
  border-radius: 3px;
  border: none;
  margin-top: 8px;
  font-size: 14px;
  font-weight: 300;
}
::placeholder
{
  color: #4b4e4d;
  padding-left: 10px;
}
button
{
  width: 100%;
  margin-top: 35px;
  padding: 12px;
  background: #dde1e7;
  border: none;
  font-size: 17px;
  font-weight: 600;
  margin-bottom: 32px;
}<div class="center">
  <input type="checkbox" id="click">
  <label for="click" class="click-me">Passport</label>
  <div class="content">
    <label for="click" id="temp">x</label>
    <form>
      <select style="display: none" id="select">
        <option value="150">150 days</option>
      </select>
      <select style="display: none" id="select2">
        <option value="50">150 days</option>
      </select>
      <label for="date1">Date Issued:</label>
      <input type="date" onchange="setSecondDate();" id="date1">
      <label for="date2">Expiry Date:</label>
      <input type="date" onchange="setThirdDate();" id="date2">
      <label for="date3">Recommended Application Date:</label>
      <input type="date" id="date3">
    </form>
  </div>
</div>Any help would be appreciated
 
     
    