
FetchIt
Lightweight AJAX form submission in MODX via the Fetch API on top of FormIt or a custom snippet


In Cirrus CSS, invalid fields need two classes: input-error and text-danger. Set both in fetchit.frontend.input.invalid.class, separated by a space.
<form>
<div class="row">
<div class="col-12">
<label>Name</label>
<input type="text" name="name" value="">
<small class="text-danger"></small>
</div>
</div>
<div class="row">
<div class="col-12">
<label>Email</label>
<input type="email" name="email" value="">
<small class="text-danger"></small>
</div>
</div>
<div class="row">
<div class="col-12">
<input type="submit" class="btn-primary">
<input type="reset" class="btn-default">
</div>
</div>
</form>Steps:
data-error for error text.[data-success] and [data-validation-error] for AJAX.fetchit.frontend.input.invalid.class to input-error text-danger.Информация
Set action to the page URL.
<form>
<form action="[[~[[*id]]]]" method="post">
<div class="row">
<div class="col-12">
<label>Name</label>
<input type="text" name="name" value="">
<input type="text" name="name" value="[[+fi.name]]">
<small class="text-danger"></small>
<small class="text-danger" data-error="name">[[+fi.error.name]]</small>
</div>
</div>
<div class="row">
<div class="col-12">
<label>Email</label>
<input type="email" name="email" value="">
<input type="email" name="email" value="[[+fi.email]]">
<small class="text-danger"></small>
<small class="text-danger" data-error="email">[[+fi.error.email]]</small>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="toast toast--success" role="alert" data-success style="display: none;"></div>
<div class="toast toast--error" role="alert" data-validation-error style="display: none;"></div>
</div>
</div>
<div class="row">
<div class="col-12">
<input type="submit" class="btn-primary">
<input type="reset" class="btn-default">
</div>
</div>
</form><form>
<form action="{$_modx->resource.id | url}" method="post">
<div class="row">
<div class="col-12">
<label>Name</label>
<input type="text" name="name" value="">
<input type="text" name="name" value="{$_modx->getPlaceholder('fi.name')}">
<small class="text-danger"></small>
<small class="text-danger" data-error="name">{$_modx->getPlaceholder('fi.error.name')}</small>
</div>
</div>
<div class="row">
<div class="col-12">
<label>Email</label>
<input type="email" name="email" value="">
<input type="email" name="email" value="{$_modx->getPlaceholder('fi.email')}">
<small class="text-danger"></small>
<small class="text-danger" data-error="email">{$_modx->getPlaceholder('fi.error.email')}</small>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="toast toast--success" role="alert" data-success style="display: none;"></div>
<div class="toast toast--error" role="alert" data-validation-error style="display: none;"></div>
</div>
</div>
<div class="row">
<div class="col-12">
<input type="submit" class="btn-primary">
<input type="reset" class="btn-default">
</div>
</div>
</form>