[jQuery] ui.datepicker.js - setDateFor()

[jQuery] ui.datepicker.js - setDateFor()


I just wasted an hour trying to figure out how to simply set the date
for a datepicker from within code. So I'm posting what I've learned
here hoping that I might save someone that hour themselves...
What I was trying to do was to simply show a default date in my text
box. I wanted to use the datepicker's methods so that a) I would have
the same format as the results, and b) I wouldn't need to worry about
creating a custom format method for the default that may or may not
create a format that would work properly with the datepicker.
The sample pages do not seem to have this demonstrated (it's late, so
maybe I just missed it).
Turns out the documentation is kinda correct. Doing this DOES work:
$.datepicker.setDateFor("#mytextbox", new Date());
But what it doesn't do is actually SHOW the date in your text box. To
do that you have to do this:
$("#mytextbox").val(
$.datepicker.formatDate(
"dd M yy",
$.datepicker.getDateFor("#mytextbox")
)
);
(NOTE, that should be one line, I broke it down so it would render half
decent in my mail client that auto wraps text at 80 chars...)
Doing the getDateFor() method does NOT honor the date format you've set
for the date picker. This makes sense because you're likely to be doing
calculations on this date and getting a raw date object back is best for
that. So you have to take the date you retrieved and then filter it
through the formatDate() method.
My thoughts are that the setDateFor() method should update the related
textbox. I can't think of any instances where this would cause problems
(but it's late, and I'm tired.. :)
So, hopefully this rambling post will help someone else trying to do the
same.
As an aside, I'm VERY happy to see the new formatting and parsing
options. Good work Marc!
Shawn