See an example https://jon49.github.io/form-subscribe/.
I use this with my html-form
library. I mainly use it to submit forms based
off of events that happen elsewhere on the page. Sometimes it is nice having the
other functionality too.
The form-subscribe custom form element extends the HTMLFormElement
class and
provides a flexible mechanism for handling form events and executing actions
based on specified configurations. It allows for dynamic event binding,
conditional checks, and debouncing.
<form
is="form-subscribe"
data-event="submit"
data-match="detail: { value: 'valid' }"
data-call="handleFormSubmit">
<!-- Form content goes here -->
</form>
- data-event: Specifies the event to listen for.
- data-match: Specifies conditions for the event to match.
- data-call: Specifies the function to call when the event conditions are met.
- data-onload: Request a form submission when the element is loaded.
<form
id="my-form"
is="form-subscribe"
data-event="submit"
data-match-not="target: { id: 'my-form' }"
>
<!-- Form content goes here -->
</form>
In this example, the form will request a submit on the "submit" event. Except when itself is submitted.
<form
is="form-subscribe"
data-event="input"
data-match="target: { value: { length: 10} }"
data-call="handleInputChange">
<!-- Form content goes here -->
</form>
This example triggers the handleInputChange
function only when the length of the
input value is 10.
<form
is="form-subscribe"
data-event="input"
data-debounce="500"
data-call="handleInputDebounced">
<!-- Form content goes here -->
</form>
The handleInputDebounced
function will be called with a debounce of 500
milliseconds, preventing rapid consecutive calls.