How to set input type date's default value to today?
Like any HTML input field, the browser will leave the date element empty unless a default value is specified within the value
attribute. Unfortunately, HTML5 doesn't provide a way of specifying 'today'
in the HTMLInputElement.prototype.value
.
One must instead explicitly provide a RFC3339 formatted date (YYYY-MM-DD
). For example:
element.value = "2011-09-29"
The JavaScript Date object provides enough built-in support for the required format to avoid doing it manually:
Add this for correct timezone support:
Date.prototype.toDateInputValue = (function() {
var local = new Date(this);
local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
return local.toJSON().slice(0,10);
});
jQuery:
$(document).ready( function() {
$('#datePicker').val(new Date().toDateInputValue());
});
Pure JS:
document.getElementById('datePicker').value = new Date().toDateInputValue();