2.9 KiB
+++
title = "hx-disabled-elt"
description = """
The hx-disabled-elt attribute in htmx allows you to specify elements that will have the disabled
attribute added
to them for the duration of the request."""
+++
The hx-disabled-elt
attribute allows you to specify elements that will have the disabled
attribute
added to them for the duration of the request. The value of this attribute can be:
- A CSS query selector of the element to disable.
this
to disable the element itselfclosest <CSS selector>
which will find the closest ancestor element or itself, that matches the given CSS selector (e.g.closest fieldset
will disable the closest to the elementfieldset
).find <CSS selector>
which will find the first child descendant element that matches the given CSS selectornext
which resolves to element.nextElementSiblingnext <CSS selector>
which will scan the DOM forward for the first element that matches the given CSS selector (e.g.next button
will disable the closest following siblingbutton
element)previous
which resolves to element.previousElementSiblingprevious <CSS selector>
which will scan the DOM backwards for the first element that matches the given CSS selector. (e.g.previous input
will disable the closest previous siblinginput
element)
Here is an example with a button that will disable itself during a request:
<button hx-post="/example" hx-disabled-elt="this">
Post It!
</button>
When a request is in flight, this will cause the button to be marked with the disabled
attribute,
which will prevent further clicks from occurring.
The hx-disabled-elt
attribute also supports specifying multiple CSS selectors separated by commas to disable multiple
elements during the request. Here is an example that disables buttons and text input fields of a particular form during the request:
<form hx-post="/example" hx-disabled-elt="find input[type='text'], find button">
<input type="text" placeholder="Type here...">
<button type="submit">Send</button>
</form>
Note that you can also use the inherit
keyword to inherit parent values for a disabled elements and add additional
disabled element CSS selectors:
<main hx-disabled-elt="#logout-button">
...
<form hx-post="/example" hx-disabled-elt="inherit, find input[type='text'], find button">
<input type="text" placeholder="Type here...">
<button type="submit">Send</button>
</form>
</main>
Notes
hx-disabled-elt
is inherited and can be placed on a parent element