Skip to content
On this page

Validation

Ez Form use async-validator to handle form 's validation.

There are two ways you can add rules to validate form.

FormItem Level

EzFormItem has prop rules to get rules for each field in your form.

Fill form and submit then check console tab in devtool.

View Code
vue
<template>
	<EzForm @submit="handleSubmit" @error="handleError">
		<EzFormItem
			label="Username"
			name="user.username"
			:rules="[{ required: true }]"
		>
			<input placeholder="Enter Username" />
		</EzFormItem>
		<EzFormItem
			label="First name"
			name="user.firstName"
			:rules="[{ required: true }]"
		>
			<input placeholder="Enter your First name" />
		</EzFormItem>
		<EzFormItem
			label="First name"
			name="user.lastName"
			:rules="[{ required: true }]"
		>
			<input placeholder="Enter your Last name" />
		</EzFormItem>
		<EzFormItem
			label="Password"
			name="user.password"
			:rules="[{ required: true }]"
		>
			<input placeholder="Password" type="password" />
		</EzFormItem>
		<button type="submit">Submit</button>
	</EzForm>
</template>

<script lang="ts" setup>
function handleSubmit(values: RegisterUserRequest) {
	console.log(values); // {user: {username: "tester", firstName: "Johnny", lastName: "Pham", password: "123456"}}
}

function handleError(errors) {
	console.log(errors); // List of errors of fields
}
</script>

Form Level

You can pass your validation's rules to EzForm using prop rules. It is similar to EzFormItem's prop rules.

Fill form and submit then check console tab in devtool.

View Code
vue
<template>
	<EzForm
		:rules="{
			'user.username': [{ type: 'string', min: 3 }],
			'user.firstName': { type: 'string', min: 3 },
		}"
		@submit="handleSubmit"
		@error="handleError"
	>
		<EzFormItem
			label="Username"
			:name="['user', 'username']"
			:rules="[{ required: true }]"
		>
			<input placeholder="Enter Username" />
		</EzFormItem>
		<EzFormItem
			label="First name"
			name="user.firstName"
			:rules="[{ required: true }]"
		>
			<input placeholder="Enter your First name" />
		</EzFormItem>
		<EzFormItem
			label="First name"
			name="user.lastName"
			:rules="[{ required: true }]"
		>
			<input placeholder="Enter your Last name" />
		</EzFormItem>
		<EzFormItem
			label="Password"
			name="user.password"
			:rules="[{ required: true }]"
		>
			<input placeholder="Password" type="password" />
		</EzFormItem>
		<button type="submit">Submit</button>
	</EzForm>
</template>

<script lang="ts" setup>
function handleSubmit(values: RegisterUserRequest) {
	console.log(values); // {user: {username: "tester", firstName: "Johnny", lastName: "Pham", password: "123456"}}
}

function handleError(errors) {
	console.log(errors); // List of errors of fields
}
</script>

Rules has same name in EzForm and EzFormItem will be merged.

Example: Rules of user.username will be

ts
[{ require: true }, { type: "string", min: 3 }];

Rules

For more rules, please check async-validator documentation.

EzForm