How can I make an HTML <div>
element receive focus, so elements will be put into focus when focus()
is called on them?
Asked
Active
Viewed 8.7k times
74

Simon Adcock
- 3,554
- 3
- 25
- 41

Chito Adinugraha
- 1,220
- 2
- 15
- 21
-
6You mean, so the `div` element can receive focus? HTML `tabindex="0"` JS `elRef.tabIndex = 0;` – Fabrício Matté Apr 28 '13 at 09:33
-
Possible duplicate of [Is it possible to focus on ausing javascript focus() function?](http://stackoverflow.com/questions/3656467/is-it-possible-to-focus-on-a-div-using-javascript-focus-function)– Tim Malone Jul 06 '16 at 04:38
-
Please read from https://gist.github.com/jamiewilson/c3043f8c818b6b0ccffd, not every html element is focusable by default. – Alan Dong Aug 09 '19 at 06:13
1 Answers
133
Set the tabindex="0"
on the div
, on the assumption that you want the div
s to receive focus, rather than child elements.
Updated the answer to add a JS Fiddle demo, showing a JavaScript means of achieving this:
var divs = document.getElementsByTagName('div');
for (var i = 0, len = divs.length; i < len; i++){
divs[i].setAttribute('tabindex', '0');
}
While composing the demo I found that tabindex="-1"
allows the element to receive mouse-clicks to assign focus, but not keyboard events (through the tab button), however (and as implied in the comment, earlier, by Fabricio Matté, a tabindex="0"
allows for both). So I've used that in the demo, and updated the original answer to reflect that change.
Behavior of tabindex="0"
versus tabindex="-1"
documented here: https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets#Using_tabindex

JHS
- 1,423
- 17
- 29

David Thomas
- 249,100
- 51
- 377
- 410
-
`tabindex="-1"` also allows you to focus the element with javascript by using `element.focus()` – Seega Nov 17 '22 at 14:36