Skip to main content

Search and Top Navigation

#8066 open feature ()

Opened January 27, 2012 10:19PM UTC

Last modified June 24, 2014 11:41PM UTC

datepicker setDate should trigger onSelect

Reported by: sprugman Owned by:
Priority: minor Milestone: none
Component: ui.datepicker Version: 1.8.17
Keywords: Cc:
Blocked by: Blocking:
Description

If I have an event handler onSelect, I want it to fire when I change the selection via setDate. Here's a fiddle that demonstrates it not happening.

http://jsfiddle.net/sprugman/vgQMa/

Attachments (0)
Change History (9)

Changed May 23, 2012 06:34AM UTC by enbergj comment:1

This is actually quite important, since there seems to be no SANE way to programmatically trigger the onSelect callback.

For example in my case, I'm using a Yii widget that wraps around jQuery UI datepicker, listens for the onSelect and updates the selected date in an input field to be submitted. I then use the setDate callback from JavaScript to update the selected date on an "end date" datepicker if the user selects a date past the end date from a "start date" datepicker. Now what I have to do is:

foo.datepicker('setDate', newDate);
foo.datepicker('options', 'onSelect')(newDate);

Changed June 26, 2012 01:22AM UTC by scottgonzalez comment:2

type: enhancementfeature

Changed October 03, 2012 05:32PM UTC by Jasmine comment:3

Just wanted to add that as long as you don't need the first parameter (the date as a string), then an alternative workaround is to add a standard jQuery 'change' handler to foo that calls the same function that datepicker's onSelect does.

Then it could be done by

foo.datepicker('setDate', newDate);
foo.change();

Not ideal by any measure, I actually like enbergj's workaround better as it keeps it all in onSelect, but this way may be easier for other developers to remember if you are working on a team.

Changed October 11, 2012 02:43PM UTC by scottgonzalez comment:4

milestone: 1.9.01.11.0

Changed October 19, 2012 10:19PM UTC by mikesherov comment:5

status: newopen

Changed December 12, 2012 12:55AM UTC by omnidev comment:6

_comment0: enbergj's method didn't work for me because my onSelect handler needed access to the inst object that is apssed internally to that event handler. I needed to be able to pass get the internal datepicker instance so I made a function to get it. \ \ Function to get the internal instance object of a datepicker element: http://jsfiddle.net/eG95A/ \ \ I believe there has to be a better way, but if you just need something that'll do the job, this is it until you find something better.1355273785821805
_comment1: enbergj's method didn't work for me because my onSelect handler needed access to the inst object that is passed internally to that event handler. I needed to be able to pass get the internal datepicker instance so I made a function to get it. \ \ Function to get the internal instance object of a datepicker element: http://jsfiddle.net/eG95A/ \ \ I believe there has to be a better way, but if you just need something that'll do the job, this is it until you find something better.1355273856383016

enbergj's method didn't work for me because my onSelect handler needed access to the inst object that is passed internally to that event handler. I needed to be able to pass get the internal datepicker instance so I made a function to get it.

Function to get the internal instance object of a datepicker element: http://jsfiddle.net/eG95A/2

I believe there has to be a better way, but if you just need something that'll do the job, this is it until you find something better.

Changed February 28, 2013 04:51PM UTC by Desty Nova comment:7

_comment0: See this stackoverflow thread: http://stackoverflow.com/questions/2155485/jquery-datepicker-cant-trigger-onselect-event-manually \ \ $(".ui-datepicker-current-day").trigger("click"); \ \ is way more simple, though relying on the class used by jquery ui for the current day in calendar1362070312713452

See this stackoverflow thread: http://stackoverflow.com/questions/2155485/jquery-datepicker-cant-trigger-onselect-event-manually

$(".ui-datepicker-current-day").trigger("click");

is way more simple, though relying on the class used by jquery ui for the current day in calendar

Changed September 25, 2013 05:02AM UTC by dsoprea comment:8

Has there been any progress on this. It seems like a reasonable functionality. I couldn't believe that this wasn't default behavior until I verified it.

Changed June 24, 2014 11:41PM UTC by scottgonzalez comment:9

milestone: 1.11.0none