The blur event fires when an element loses focus — Tab away, click elsewhere, or call .trigger("blur"). Bind with .on("blur", handler) (since jQuery 1.7). Originally for form fields; modern browsers also send it on other focusable elements.
Remember
$("#email").on("blur", function () {
// user left this field
});
$("#email").trigger("blur"); // fire in code
// Opposite: focus = gains focus
// Bubbling sibling: focusout (use for delegation)
// Legacy shorthand: .blur() — prefer .on / .trigger
Bind on the field that should react when focus leaves it.
Select the element ($("#email"), $("input.name"), …).
Call .on("blur", handler) — optional eventData before the handler.
In the handler, read this / $(this) for the field that lost focus.
To fire from a button or timer, use .trigger("blur").
For one handler on a form with many (or dynamic) fields, prefer focusout.
Piece
Required?
Role
Element
Yes
Focusable control to watch
"blur"
Yes
Event type string
handler
Yes (to bind)
Runs when focus leaves
eventData
Optional
Passed as event.data
.trigger("blur")
Optional
Run handlers from code
Pseudocode
Pseudocode
element.on("blur", handler)
when element loses focus:
// Tab away, click elsewhere, or trigger("blur")
call handler(event)
this = the element that lost focus
// Does NOT bubble — parent .on("blur", fn) won't see child blur
// For parent listening: use focusout instead
Reference
Cheat Sheet
Keep these facts handy while wiring form UX.
Topic
Detail
Bind
.on("blur" [, data], handler) (1.7+)
Trigger
.trigger("blur") (1.0+)
Bubbles?
No — use focusout for parents
vs focus
Lose focus vs gain focus
vs focusout
Same idea, but focusout bubbles
Delegation
jQuery maps blur → focusout (1.4.2+)
Shorthand
.blur() deprecated since 3.3
Typical use
Validate or clean up when leaving a field
Try it
Live Preview
Focus the field, then leave it (Tab / click outside) or trigger blur from the button — same idea as the official jQuery API demos.
Bound with .on("blur") — Tab away or use Trigger blur.
Log
Waiting for blur…
Code
jQuery Examples
Short, copy-ready snippets. Open DevTools, or use Try It Yourself for a live editor.
Example 1 — Bind a Blur Handler
Log a message when the field loses focus (official idea).
jQuery
$("#target").on("blur", function () {
$("#out").text("Handler for blur called.");
});
Data. The object before the handler becomes event.data.
Blur. Leaving the field runs the handler.
Label.event.data.field names which control it was.
Value.$(this).val() is what the user typed.
Example 5 — blur vs focusout
Direct blur on the input; bubbling focusout on the form.
jQuery
$("#email").on("blur", function () {
$("#out").append("blur on #email\n");
});
$("form").on("focusout", function (event) {
$("#out").append(
"focusout on form (from " + event.target.id + ")\n"
);
});
blur. Bound on the field — fires for that field only.
focusout. Bound on the form — sees nested fields leave focus.
Both can run. Leaving #email may log both lines.
Choose. Single field → blur; whole form → focusout.
Edge Cases & Pitfalls
Watch for these when using blur in real forms.
bubble
Does not bubble
A parent .on("blur", …) will not see child blur. Use focusout for form-level handlers.
legacy
.blur() is deprecated
Since jQuery 3.3, prefer .on("blur") and .trigger("blur") over the shorthand method.
alert
Alerts can steal focus
Showing alert() inside a blur handler can cause awkward focus loops. Prefer updating a message in the page.
ie
IE async blur (historical)
Native blur was async in IE. As of jQuery 3.7.0, jQuery uses focusout as the backing event for blur in IE to avoid timing bugs.
Compatibility
Browser Support
The blur event is a standard browser event. jQuery’s .on("blur") API has been available since 1.7; .trigger("blur") since 1.0. Works wherever your loaded jQuery version runs.
✓ Stable · DOM focus
blur event
Supported in all modern browsers. Prefer jQuery 3.x so .on("blur") / .trigger("blur") and IE focusout mapping (3.7+) are available.
100%Event support
Google ChromeAll versions · Desktop & Mobile
Full support
Mozilla FirefoxAll versions · Desktop & Mobile
Full support
Apple SafariAll versions · macOS & iOS
Full support
Microsoft EdgeAll versions · Chromium & Legacy
Full support
Internet ExplorerIE 6+ · Legacy environments
Full support
OperaAll modern versions
Full support
blurUniversal
Bottom line: Safe for production forms. Use .on("blur") for single fields; use focusout when one parent handler should cover many inputs.
Analysis
Performance Notes
Approach
Cost
Best for
$el.on("blur", fn)
Cheap
One field, direct bind
$form.on("focusout", fn)
Cheap
Many / dynamic fields
Heavy work in handler
Can stutter
Keep blur handlers light (validate, message)
Binding every input separately
More listeners
Prefer one focusout on the form when possible
Blur handlers run only when focus moves. Keep them short — validate and update UI — and avoid network calls on every blur unless you debounce.
Remember
Key Takeaways
Role: react when an element loses focus.
Modern API:.on("blur") / .trigger("blur") — not .blur().
Pair with focus: show hints on focus, validate on blur.
One line:blur means “this field just lost focus” — bind with .on("blur") for per-field UX.
Frequently Asked Questions
The blur event fires when an element loses focus — the user tabs away, clicks elsewhere, or you call .trigger("blur"). Bind handlers with .on("blur", handler) (since 1.7). It applies to form controls and other focusable elements.
They are opposites. focus fires when an element gains focus; blur fires when it loses focus. Pair them for UX: show a hint on focus, validate or hide it on blur.
No. Native blur does not bubble. For one handler on a parent form (including dynamic fields), use focusout — it bubbles. Since 1.4.2, jQuery maps blur to focusout in its delegation methods.
Call $('#target').trigger("blur"). That runs bound blur handlers and moves focus away per browser rules. Useful when a button should force a field’s blur validation before submit.
Both. Blur gives feedback right after the user leaves a field. Submit catches anything missed. Common pattern: light checks on blur, full form check on submit.
blur is the event name used with .on("blur") / .trigger("blur"). .blur() is the deprecated shorthand method — prefer .on("blur") and .trigger("blur") in new code (deprecated since jQuery 3.3).