When an element gains focus, the browser fires a "focus
" event on it. When it loses focus, a "blur
" event fires.
Unlike other events, these two events do not propagate. A handler on a parent element is not notified when a child element gains or loses focus.
The following example displays help text for the text field that currently has focus.
<p>Name:<input type="text"data-help="Your full name"></p> <p>Age:<input type="text"data-help="Age in years"></p> <p id="help"></p> <script> var help = document.querySelector("#help"); var fields = document.querySelectorAll("input"); for (var i = 0; i & lt; fields.length; i++) { fields[i].addEventListener("focus", function(event) { var text = event.target.getAttribute("data-help"); help.textContent = text; }); fields[i].addEventListener("blur", function(event) { help.textContent = ""; }); } </script>