]> source.dussan.org Git - jquery-ui.git/commit
Autocomplete: Fix IE/Edge scrolling issues
authorRyan Oriecuia <ryan.oriecuia@visioncritical.com>
Thu, 12 Jan 2017 19:16:20 +0000 (11:16 -0800)
committerScott González <scott.gonzalez@gmail.com>
Wed, 25 Jan 2017 15:57:34 +0000 (10:57 -0500)
commit573e7e69c9b63752fb06a15d60ec2dded839e093
treea9754b38a89fef739076dd102a8a05bab7809644
parent4b9f32486c644cd4c9c5c6779333e0c47801b1d3
Autocomplete: Fix IE/Edge scrolling issues

IE11 and scrolling autocompletes didn't get along great; this should help fix
their relationship.

When you click on an autocomplete scrollbar in IE11, the menu temporarily
gains focus, which caused a couple problems.

1. Depending on how long you clicked, the dropdown could close.

2. Scrolling down by clicking the scrollbar's down arrow would misbehave. The
list would pop back up to the top with the first item selected.

We can fix both problems by modifying the focus/blur handling a bit.

1. There is a flag to instruct the control to ignore blurs, but it was getting
cleared too quickly; when the code refocused the input after it was blurred,
IE would send *another* blur event, which wasn't getting ignored and would
close the dropdown. We now wait for the focus/blur pair to process before
clearing the flag.

2. We remove the tabindex from the dropdown menu, which prevents menu's focus
handler from firing. When you focus a menu, it will select the first menu item
if none are selected. Selecting a menu item will scroll it into view if it's
not visible. This combination of behaviors was causing the strange behavior
when attempting to scroll down.

I couldn't figure out a way to write a unit test for this, since it's IE only
and seems to require user interaction. You can verify the previous behavior
(and the fix) on `demos/autocomplete/maxheight.html`

Fixes #9638
Closes gh-1785
ui/widgets/autocomplete.js