#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 16 years ago by
Component: | core → event |
---|---|
Milestone: | 1.1.4 → 1.2.2 |
Changed 16 years ago by
comment:2 Changed 16 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 10 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