Form Validation
Form Validation
Trivule provides simple, declarative form validation. Define rules in HTML and handle events in JavaScript.
Quick Start
HTML
<form id="contact" @v:form>
<input name="email" @v:rules="required|email" />
<div @v:feedback="email"></div>
<input name="message" @v:rules="required|min_length:10" />
<div @v:feedback="message"></div>
<button @v:submit>Submit</button>
</form>JavaScript
import { Trivule } from 'trivule';
Trivule.init();
const form = Trivule.form('#contact');
form.onSuccess((data) => {
console.log('Form valid!', data.values);
// { email: 'user@example.com', message: '...' }
});
form.onError((data) => {
console.log('Validation errors:', data.errors);
// [{ field: 'email', message: 'Email is required' }]
});Handling Validation
onSuccess(callback)
Called when all fields pass validation.
form.onSuccess((data) => {
console.log(data.values); // All validated values
});Callback Data:
values- Object with all input values keyed by name
onError(callback)
Called when validation fails.
form.onError((data) => {
console.log(data.errors); // Array of errors
console.log(data.firstError); // First error for convenience
console.log(data.values); // Current input values
});Callback Data:
errors- Array of{ field, message }objectsfirstError- First error objectvalues- Current input values
Configuration
const form = Trivule.form('#myForm', {
invalidClass: 'is-invalid',
validClass: 'is-valid',
feedbackSelector: '[@v:feedback={name}]',
triggerEvents: ['submit', 'blur'] // When to validate
});Checking Form State
// Check if form is currently valid
if (form.isValid()) {
// Submit the form
}
// Get all input values
const values = form.inputs(); // [{ name: 'email', value: '...' }]
// Get failed inputs
const errors = form.failed(); // [{ name: 'email', value: '' }]Custom Rules
Define custom validation rules:
const trivule = Trivule.init();
trivule.defineRule('phone', (value) => ({
passes: /^\+?[\d\s-]+$/.test(value),
value
}), 'Please enter a valid phone number');Then use in HTML:
<input name="phone" @v:rules="required|phone" />Events
Listen to form events:
// Form initialized
form.on('tr.form.init', (e) => console.log('Initialized'));
// Form validated (success or failure)
form.onValidate((form) => console.log('Validated'));