Vee-Validate
Painless Vue forms
README
Painless Vue forms
Features
- 🍞 Easy: Declarative validation that is familiar and easy to setup
- 🧘♀️ Flexible: Synchronous, Asynchronous, field-level or form-level validation
- ⚡️ Fast: Build faster forms faster with intuitive API and small footprint
- 🏏 Minimal: Only handles the complicated form concerns, gives you full control over everything else
- 😎 UI Agnostic: Works with native HTML elements or your favorite UI library components
- 🦾 Progressive: Works whether you use Vue.js as a progressive enhancement or in a complex setup
- ✅ Built-in Rules: Companion lib with 25+ Rules that covers most needs in most web applications
- 🌐 i18n: 45+ locales for built-in rules contributed by developers from all over the world
Getting Started
Installation
- ```sh
- # Install with yarn
- yarn add vee-validate
- # Install with npm
- npm install vee-validate --save
- ```
Vue version support
The main v4 version supports Vue 3.x only, for previous versions of Vue, check the following the table
vue | vee-validate | Documentation |
---|---|---|
----------- | -------------------- | ---------------------------------------------------------------------------------------- |
`2.x` | `2.x` | [v2](https://vee-validate.logaretm.com/v2) |
`3.x` | `4.x` | [v4](https://vee-validate.logaretm.com/v4) |
Usage
vee-validate offers two styles to integrate form validation into your Vue.js apps.
Declarative Components
Higher-order components are better suited for most of your cases. Register the Field and Form components and create a simple required validator:
- ``` js
- import { Field, Form } from 'vee-validate';
- export default {
- components: {
- Field,
- Form,
- },
- methods: {
- isRequired(value) {
- return value ? true : 'This field is required';
- },
- },
- };
- ```
Then use the Form and Field components to render your form:
- ```vue
- <Form v-slot="{ errors }">
- <Field name="field" :rules="isRequired" />
- <span>{{ errors.field }}</span>
- </Form>
- ```
Composition API
If you want more fine grained control, you can use useField function to compose validation logic into your component:
- ``` js
- import { useField } from 'vee-validate';
- export default {
- setup() {
- // Validator function
- const isRequired = value => (value ? true : 'This field is required');
- const { value, errorMessage } = useField('field', isRequired);
- return {
- value,
- errorMessage,
- };
- },
- };
- ```
Then in your template, use v-model to bind the value to your input and display the errors using errorMessage:
- ```vue
- <input name="field" v-model="value" />
- <span>{{ errorMessage }}</span>
- ```
📚 Documentation
Read the documentation and demos.
Contributing
You are welcome to contribute to this project, but before you do, please make sure you read the contribution guide.
Credits
- Inspired by Laravel's validation syntax
- v4 API Inspired by Formik's
- Logo by Baianat
Emeriti
Here we honor past contributors and sponsors who have been a major part on this project.
- Baianat.