jquery/jquery-ui — pull request #1050 by SpoonNZ (2013-08-06 00:37:44+00:00)
Title: Update _checkOffset to handle invisible input

The _findPos function already searches for the nearest visible element, and returns its position. This is good.

The _checkOffset function, however, just deals with the current element, which causes issues where your invisible element is placed oddly by the browser.

The problem is only evident when the datepicker's input element is invisible (e.g. if you're showing an altField instead, and have a button to show the picker) and a descendant of a fixed element, and the screen is scrolled. The conditions never matched, so the documents scroll amount was never subtracted from the datepicker's position.

This fix uses code adapted from the _findPos function to find the nearest visible element and uses that to test the offset. Note that inputHeight and inputWidth are reset to 0, as that's the effective width of an invisible element (although using .outerHeight() actually returns a positive number).