
FetchIt
Lightweight component for form handling and submission using Fetch API


Suppose your layout is built with Bootstrap and your form looks like this:
<form class="row g-3">
<div class="col-md-4">
<label for="name" class="form-label">First name</label>
<input type="text" class="form-control" id="name" value="">
<div class="invalid-feedback"></div>
</div>
<div class="col-md-4">
<label for="email" class="form-label">Last name</label>
<input type="email" class="form-control" id="email" value="">
<div class="invalid-feedback"></div>
</div>
<div class="col-12">
<button class="btn btn-primary" type="submit">Submit form</button>
</div>
</form>To set it up:
data-error="*" to elements that will display error text.is-invalid class for invalid state, set system setting fetchit.frontend.input.invalid.class to is-invalid (this is the default).Important
Markup validators complain about an empty action, so set the page URL there.
<form class="row g-3">
<form action="[[~[[*id]]]]" class="row g-3">
<div class="col-md-4">
<label for="name" class="form-label">First name</label>
<input type="text" class="form-control" id="name" name="name" value="">
<input type="text" class="form-control" id="name" name="name" value="[[+fi.name]]">
<div class="invalid-feedback"></div>
<div class="invalid-feedback" data-error="name">[[+fi.error.name]]</div>
</div>
<div class="col-md-4">
<label for="email" class="form-label">Last name</label>
<input type="email" class="form-control" id="email" name="email" value="">
<input type="email" class="form-control" id="email" name="email" value="[[+fi.email]]">
<div class="invalid-feedback"></div>
<div class="invalid-feedback" data-error="email">[[+fi.error.email]]</div>
</div>
<div class="col-12">
<button class="btn btn-primary" type="submit">Submit form</button>
</div>
</form>