Bug Tracker

Modify

Ticket #1486 (closed bug: fixed)

Opened 6 years ago

Last modified 3 months ago

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:
Blocking: Blocked by:

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

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

Change History

comment:1 Changed 6 years ago by brandon

  • Component changed from core to event
  • Milestone changed from 1.1.4 to 1.2.2

Changed 6 years ago by brandon

Patch + Tests

comment:2 Changed 6 years ago by brandon

  • need changed from Review to Commit
  • 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 5 years ago by brandon

  • Status changed from new to closed
  • Resolution set to fixed

Fixed in Rev [4073]

comment:4 Changed 3 months 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?

Please follow the  bug reporting guidlines and use  jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

View

Add a comment

Modify Ticket

Action
as closed
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.