Skip to content

Instantly share code, notes, and snippets.

@pstoica
Last active August 1, 2023 21:00
Show Gist options
  • Star 98 You must be signed in to star a gist
  • Fork 16 You must be signed in to fork a gist
  • Save pstoica/4323d3e6e37e8a23dd59 to your computer and use it in GitHub Desktop.
Save pstoica/4323d3e6e37e8a23dd59 to your computer and use it in GitHub Desktop.
onBlur for entire react element
function OnBlurComponent({ onBlur }) {
const handleBlur = (e) => {
const currentTarget = e.currentTarget;
// Check the newly focused element in the next tick of the event loop
setTimeout(() => {
// Check if the new activeElement is a child of the original container
if (!currentTarget.contains(document.activeElement)) {
// You can invoke a callback or add custom logic here
onBlur();
}
}, 0);
};
return (
<div tabIndex="1" onBlur={handleBlur}>
Hello <input type="text" value="world" />
</div>
);
}
@gattonero1052
Copy link

That helps a lot!

@diegohaz
Copy link

You can also use event.relatedTarget to get the next active element on blur if you don't care about IE 11.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment