Bug Tracker

Opened 12 years ago

Closed 12 years ago

Last modified 7 years ago

#1486 closed bug (fixed)

Triggering focus to hidden elements does not work in IE

Reported by: himynameiznate Owned by: brandon
Priority: major Milestone: 1.2.2
Component: event Version: 1.1.3
Keywords: Cc:
Blocked by: Blocking:

Description

If you try to trigger the focus of a field that is hidden (whether it's hidden on it's own, or hidden because the parent element(s) are hidden), IE will throw the following error:

"Can't move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus."

Using .is(':visible') won't work, because the container(s) could be hidden.

However, the fix is pretty simple, by editing the jQuery event core, inside of the trigger method, change this line:

if ( fn && val !== false && !jQuery.nodeName(element, 'a') )
element[ type ]();

To this:

if ( fn && val !== false && !jQuery.nodeName(element, 'a') && !(type == 'focus' && element.offsetHeight == 0) )
element[ type ]();

Of course, I haven't tested this completely thoroughly, but overall, it shouldn't break anything.

Attachments (1)

1486.diff (1.4 KB) - added by brandon 12 years ago.
Patch + Tests

Download all attachments as: .zip

Change History (5)

comment:1 Changed 12 years ago by brandon

Component: coreevent
Milestone: 1.1.41.2.2

Changed 12 years ago by brandon

Attachment: 1486.diff added

Patch + Tests

comment:2 Changed 12 years ago by brandon

need: ReviewCommit
Owner: set to brandon

I've attached a patch + tests. I just wrapped the invocation of the native handler in a try catch block.

comment:3 Changed 12 years ago by brandon

Resolution: fixed
Status: newclosed

Fixed in Rev [4073]

comment:4 Changed 7 years ago by timon.test@…

There is still an issue in IE8, when script tries to trigger focus event on disabled element (for example, button). Is it possible to fix?

Note: See TracTickets for help on using tickets.