jay r bayog
jay r bayog

Reputation: 53

Can't set minimum input date in javascript

I have this two date pickers

<label>Check-In Date : . </label>
<input id="date1" type="date" name="from" required min="<?php echo date('Y-m-d');?>">

<label>Check-Out Date : . </label>
<input id="date2" type="date" name="to" required onclick="setDate2();">

and a javascript

function setDate2() {
  var date=$('#date1').val().split('-');
  var day=date[2];
  var month=date[1]-1;
  var year=date[0];
  var someDate = new Date(year, month, day);

  someDate.setDate(someDate.getDate() + 1); 
  var dd = someDate.getDate();
  var mm = someDate.getMonth() + 1;
  var y = someDate.getFullYear();

  var someFormattedDate = y + '-'+ mm + '-'+ dd;

  document.getElementById('date2').min = someFormattedDate;
  alert(document.getElementById('date2').min)
}

this code works fine but, document.getElementById('date2').min = someFormattedDate; doesn't seen to work or something? I'm getting the correct output but doesn't set the minimum value of date2...

Upvotes: 0

Views: 94

Answers (1)

Styx
Styx

Reputation: 10076

Your problem is in this line:

var someFormattedDate = y + '-' + mm + '-'+ dd;

You forgot that month or day could be one-digit number, so it should be like this:

var someFormattedDate = y + '-' + (mm<10?'0':'') + mm + '-' + (dd<10?'0':'') + dd;

Updated fiddle: https://jsfiddle.net/iStyx/6x1zb2fq/

Added: I'd like to recommend to use Moment.js library for date/time manipulations.

Upvotes: 1

Related Questions