How do I pre-populate a jQuery Datepicker textbox with today’s date?

How do I pre-populate a jQuery Datepicker textbox with today’s date?

I have a very simple jQuery Datepicker calendar:
$(document).ready(function(){
$(“#date_pretty”).datepicker({
});
});

and of course in the HTML…

Today’s date is nicely highlighted for the user when they bring up the calendar, but how do I get jQuery to pre-populate the textbox itself with today’s date on page load, without the user doing anything? 99% of the time, the today’s date default will be what they want.

Solutions/Answers:

Solution 1:

Update: There are reports this no longer works in Chrome.

This is concise and does the job (obsolete):

$(".date-pick").datepicker('setDate', new Date());

This is less concise, utilizing chaining allows it to work in chrome (2019-06-04):

$(".date-pick").datepicker().datepicker('setDate', new Date());

Solution 2:

You must FIRST call datepicker() > then use ‘setDate’ to get the current date.

$(".date-pick").datepicker();
$(".date-pick").datepicker("setDate", new Date());

OR chain your setDate method call after your datepicker initialization, as noted in a comment on this answer

$('.date-pick').datepicker({ /* optional option parameters... */ })
               .datepicker("setDate", new Date());

It will NOT work with just

$(".date-pick").datepicker("setDate", new Date());

NOTE

Solution 3:

var myDate = new Date();
var prettyDate =(myDate.getMonth()+1) + '/' + myDate.getDate() + '/' +
        myDate.getFullYear();
$("#date_pretty").val(prettyDate);

seemed to work, but there might be a better way out there..

Related:  Check Ctrl / Shift / Alt keys on 'click' event

Solution 4:

The setDate() method sets the date and updates the associated control. Here is how:

$("#datepicker1").datepicker({
    dateFormat: "yy-mm-dd"
}).datepicker("setDate", "0");

Demo

As mentioned in documentation, setDate() happily accepts the JavaScript Date object, number or a string:

The new date may be a Date object or a string in the current date
format (e.g. ’01/26/2009′), a number of days from today (e.g. +7) or a
string of values and periods (‘y’ for years, ‘m’ for months, ‘w’ for
weeks, ‘d’ for days, e.g. ‘+1m +7d’), or null to clear the selected
date.

In case you are wondering, setting defaultDate property in the constructor does not update the associated control.

Solution 5:

Set to today:

$('#date_pretty').datepicker('setDate', '+0');

Set to yesterday:

$('#date_pretty').datepicker('setDate', '-1');

And so on with any number of days before or after today’s date.

See jQuery UI › Methods › setDate.

Solution 6:

The solution is:

$(document).ready(function(){
    $("#date_pretty").datepicker({ 
    });
    var myDate = new Date();
    var month = myDate.getMonth() + 1;
    var prettyDate = month + '/' + myDate.getDate() + '/' + myDate.getFullYear();
    $("#date_pretty").val(prettyDate);
});

Thanks grayghost!

Related:  How can I replace a regex substring match in Javascript?