Ticket #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: | ||
| 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
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
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.
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

