
FetchIt
Lightweight component for form handling and submission using Fetch API


With the framework Vanilla as with Fomantic UI the invalid class must be applied to the parent element; use the data-custom="*" selectors. Note that framework rules require validated inputs to be wrapped in an element with class p-form-validation:
<form>
<div class="p-form-validation">
<label>Name</label>
<input class="p-form-validation__input" type="text" name="name" value="">
<p class="p-form-validation__message"></p>
</div>
<div class="p-form-validation" data-custom="email">
<label>Email</label>
<input class="p-form-validation__input" type="email" name="email" value="">
<p class="p-form-validation__message"></p>
</div>
<button type="submit" class="p-button--positive">Submit</button>
<button type="reset" class="p-button">Reset</button>
</form>To set it up:
data-custom="*" to parent elements and set system setting fetchit.frontend.custom.invalid.class to is-error.data-error="*" to elements that will display error text.Important
Markup validators complain about an empty action, so set the page URL there.
<form>
<form action="[[~[[*id]]]]" method="post">
<div class="p-form-validation">
<div class="p-form-validation" data-custom="name">
<label>Name</label>
<input class="p-form-validation__input" type="text" name="name" value="">
<input class="p-form-validation__input" type="text" name="name" value="[[+fi.name]]">
<p class="p-form-validation__message"></p>
<p class="p-form-validation__message" data-error="name">[[+fi.error.name]]</p>
</div>
<div class="p-form-validation">
<div class="p-form-validation" data-custom="email">
<label>Email</label>
<input class="p-form-validation__input" type="email" name="email" value="">
<input class="p-form-validation__input" type="email" name="email" value="[[+fi.email]]">
<p class="p-form-validation__message"></p>
<p class="p-form-validation__message" data-error="email">[[+fi.error.email]]</p>
</div>
<button type="submit" class="p-button--positive">Submit</button>
<button type="reset" class="p-button">Reset</button>
</form>