:enabled (since jQuery 1.0) selects form controls that are currently enabled — interactive, with disabled === false. It is a standard CSS pseudo-class and the natural partner of :disabled.
Remember
$("input:enabled") // interactive inputs
$("button:enabled") // clickable buttons
$("#form :enabled") // enabled controls in a form
// :enabled → disabled property === false
// :not([disabled]) → no disabled attribute in markup
// Toggle with .prop("disabled", false|true)
matches = []
for each element in search context:
if element supports disabled
and element.disabled === false: // live property
matches.add(element)
return matches
// :not([disabled]) only checks: !hasAttribute("disabled")
Reference
Cheat Sheet
Keep these facts handy while working with enabled controls.
Topic
Detail
Syntax
$("input:enabled")
Since
jQuery 1.0 · CSS standard
Live state
disabled property is false
vs :not([disabled])
Attribute absence only
Opposite
:disabled
Enable
.prop("disabled", false)
Bare form
Avoid $(":enabled") → universal scan
Empty set
Nothing enabled → length 0
Try it
Live Preview
Toggle which fields are disabled, then run $("input:enabled").
Disable these inputs
Same idea as the official demo — match inputs that are currently enabled.
Enable..prop("disabled", false) makes the field interactive.
Find.$("input:enabled") now includes it.
Disable..prop("disabled", true) locks it again.
Rule. Prefer .prop over .attr for boolean form state.
Example 5 — Scoped Form Query
Limit the search so other forms on the page stay untouched.
jQuery
var n = $("#signup :enabled").length;
var all = $(":enabled").length;
$("#out").text(
"Inside #signup: " + n + "\n" +
"Whole page (avoid bare): " + all
);
One line::enabled finds live interactive controls — prefix with a tag, scope to a form, and toggle with .prop().
Frequently Asked Questions
:enabled matches form elements that are currently enabled — interactive and editable. $("input:enabled") finds every enabled input in the search context. Available since jQuery 1.0.
Official jQuery docs: results are usually similar, but :enabled selects elements whose disabled property is strictly false, while :not([disabled]) selects elements without a disabled attribute in the markup. A control inside a disabled fieldset may still fail :enabled even without its own attribute.
Bare :enabled implies the universal selector — equivalent to $("*:enabled"), which scans every element type. Prefer $("input:enabled"), $("button:enabled"), or $("#form :enabled").
Official docs: use it for elements that support the disabled attribute — button, input, select, textarea, optgroup, option, fieldset, and menuitem.
Use .prop("disabled", false) to enable and .prop("disabled", true) to disable. Use :enabled to find controls that are interactive. Prefer .prop over .attr for boolean form properties.
Yes. :enabled is a standard CSS pseudo-class for form controls. jQuery has supported it since 1.0. Prefer a tag prefix for clarity and performance.