jQuery Date picker not moving with page scroll
With a little fiddling I managed to get the following:
http://jsfiddle.net/jbK6a/12/
Using this, the datepicker hides itself on page scroll. I believe there are jQuery methods to ascertain the scroll position and so with a bit more fiddling, you could then manually manipulate the datepicker and update its position based on this value...
UPDATE: Just fiddled a bit and got: http://jsfiddle.net/jbK6a/18/ which scrolls the datepicker, but it's really messy, any number of things can break it especially other collapsible elements. Fortunately Sem has a far better and cleaner solution :)
(Thought I'd add my code anyway though)
The problem is that the datepicker is outside the div
with overflow: scroll;
. If the datepicker was generated inside the container this wouldn't be a problem.
Solution: http://jsfiddle.net/jbK6a/15/
I placed the datepicker behind the input with the beforeShow
event.
And I used position: relative;
on the scrollable container so that de absolute element listens to the container.
To solve this problem in jQuery UI 1.11.4 I added a .bind() event to the end of the datepicker instantiation:
$("*selector*").datepicker({
*settings*
}).bind('click',function () {
$("#ui-datepicker-div").appendTo("*other-selector*");
});
In my case, the "other-selector" was $(this).closest('the-date-input-parent'). This picks up the single #ui-datepicker-div box (which jQuery UI places at the end of the DOM) and moves it to a location somewhere else within the document. This can be done for multiple datepickers on the same page.
The other-selector should have position: relative; set so that the absolutely positioned #ui-datepicker-div becomes positioned relative to the new parent. Once so, it scrolls just fine.
This solution was the easiest fix to this problem (though it took a lot of time and searching to come to this conclusion) and allowed the datepicker to work correctly on mobile devices and tablets where it would otherwise be unusable.