#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)
Change History (5)
comment:1 Changed 15 years ago by
Component: | core → event |
---|---|
Milestone: | 1.1.4 → 1.2.2 |
Changed 15 years ago by
comment:2 Changed 15 years ago by
need: | Review → 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:4 Changed 9 years ago by
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?
Patch + Tests