When I use setDate
with dateFormat : 'yy-mm'
, jQuery UI DatePicker shows today's date and not the date specified in setDate
.
Example: http://jsfiddle.net/DBpJe/7981/ (edited from https://stackoverflow.com/a/2209104/5568549)
But with dateFormat : 'yy-mm-dd'
it shows the date specified in setDate
.
Example: http://jsfiddle.net/DBpJe/7982/
How to make jQuery UI DatePicker shows the date specified in setDate
with dateFormat : 'yy-mm'
?
Asked
Active
Viewed 7,776 times
4
-
$('.date-picker').datepicker('setDate', new Date()); – Visarut Sae-Pueng Mar 06 '16 at 13:05
-
@WRDev what's the point of this? I want UI DatePicker to show the date specified in setDate. Not today's date. – Curious Mar 06 '16 at 13:19
-
@Curious, if you set format without day, which date will be selected in calendar? in this case text box showing the value but date-picker object set the default value from current date. Because datepicker modal is populated from that object. – Nazmul Hasan Mar 06 '16 at 14:32
-
*The new date may be a Date object or a string in the current date format (e.g., "01/26/2009")* - So you can make a Date Object for the month and Year you want, and pass that. But you can't pass the string. Even in the example, you have `$('.date-picker').datepicker('setDate', new Date(2000, 6));` which would work as you need. – Twisty Mar 07 '16 at 18:03
-
@Twisty The problem is with dateFormat: 'yy-mm', when I click the input, UI DataPicker should show the date specified in setDate e.g.(2000, 6), but it shows today's date instead. – Curious Mar 07 '16 at 18:33
-
@Curious I see what you're observing now too. Let me do some pecking at it and see what we can do. Based on the docs, they should be exclusive. – Twisty Mar 07 '16 at 18:36
2 Answers
1
Found a solution from jQuery UI DatePicker to show month year only
Working Example for dateFormat : 'yy-mm'
: http://jsfiddle.net/DBpJe/8057/
beforeShow : function(input, inst) {
if ((datestr = $(this).val()).length > 0) {
year = datestr.substring(0, 4);
month = datestr.substring(datestr.length-2, datestr.length);
$(this).datepicker('option', 'defaultDate', new Date(year, month-1, 1));
$(this).datepicker('setDate', new Date(year, month-1, 1));
}
}
0
Found an article that addressed this exactly: http://www.jquerybyexample.net/2012/06/show-only-month-and-year-in-jquery-ui.html
Working Example: http://jsfiddle.net/Twisty/xwnoafxd/
Basically you just had to add defaultDate
setting. One of those facepalm things.
$(function() {
var myDate = new Date(2000, 6, 1);
$('.date-picker').datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'yy-mm',
defaultDate: myDate,
onClose: function(dateText, inst) {
function isDonePressed() {
return ($('#ui-datepicker-div').html().indexOf('ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all ui-state-hover') > -1);
}
if (isDonePressed()) {
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(year, month, 1));
console.log('Done is pressed')
}
}
}).datepicker("setDate", myDate);
});

Twisty
- 30,304
- 2
- 26
- 45
-
is this how it works? when we specify a date in setDate, then defaulDate's date should be set to that date?. I mean is this what happens with dateFormat: 'yy-mm-dd' ? (defaultDate's date was automatically set to the same date specified in setDate?) what I think is, UI DatePicker shows defaultDate's date (which should be set to the same date specified in setDate).. am I right? – Curious Mar 08 '16 at 08:50
-
One is an option or preference, the other is a method. `defaultDate` option sets which day is highlighted on first opening. `setDate` method sets the date for the datepicker. – Twisty Mar 08 '16 at 16:10
-
but with dateFormat: 'yy-mm-dd', UI DatePicker shows the date specified in setDate even though defaultDate was NOT set. How?. doesn't my previous comment make any sense to how it works? – Curious Mar 09 '16 at 10:00
-
-
with dateFormat: 'yy-mm-dd' in this example http://jsfiddle.net/DBpJe/7982/ UI DatePicker shows the date specified in setDate even though defaultDate option is not set, but with dateFormat: 'yy-mm' we have to set defaultDate. Why? – Curious Mar 09 '16 at 10:46
-
@Curious I have not been able to determine why this is the case, just that it is. I also found another oddity, see: http://jsfiddle.net/Twisty/xcbs60no/ When you change the date on the 2nd field, and re-open it later, it's still using the default date. – Twisty Mar 09 '16 at 20:15