vue-coe-validator ✅
Another validation form for the Vue. Validates input fields of multiple forms and displays errors.
Note: without any dependencies.
Install
yarn add vue-coe-validator
Include Plugin
Vue
Include Mixin (required only on components that need validation)
mixins: formSetup
Pay attention:
Be careful not to create a state with the name: validations and messages.
These names are reserved for the library and overwriting them may compromise their behavior.
How to use
<template> <section> <form name="form1"> <c-input name="input1" :validation="$hasError('input1')" v-model="form1.input1" /> <c-input name="input2" :validation="$hasError('input2')" v-model="form1.input2" /> <c-input name="input3" :validation="$hasError('input3')" v-model="form1.input3" /> </form> <form name="form2"> <c-input name="input1" :validation="$hasError('input1', 'form2')" v-model="form2.input1" /> </form> </section></template> <script>import { formSetup } from 'vue-coe-validator' export default { mixins: [ formSetup ], data () { return { form1: { input1: '', input2: '22' }, form2: { input1: '33' } } }, validation: { form1: { input1: { required: true, alphabetic: true }, input2: { required: true, pattern: /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\.[A-Z0-9-]+)+$/i }, input3: { required: true } }, form2: { input1: { required: true, alpha: true } } }, messages: { form1: { input1: { required: 'não pode ser vazio!', alphabetic: 'tá errado, é alphabetic!' }, input2: { required: 'preenche tudo!', pattern: 'precisa ser e-mail!' } }, form2: { input1: { required: 'tá vazio, não pode!' } } }}</script>
You can also define validations with directives
<c-input name="name" :validation="$hasError('name')" v-validator="{ required: true }" v-model="form1.name"/>
Or programmatically, using $validator.add
methods: { // add new field thisform1 = ...thisform1 coe: 'mané' // create validation for new field const validations = coe: required: true // set validation for new field this$validator }
Rules
Name | required | About |
---|---|---|
form | true |
set an name for the scope of the form |
input | true |
name the input with the tag name and its respective form value |
Mixin methods
Name | Params | About |
---|---|---|
$hasError | (inputName[str], formName[str]) |
returns a boolean |
*formName: required only when you have more than one form
Validator methods
Name | Params | About |
---|---|---|
add | (validations[obj], formName[str]) |
set validation for new field |
touch | (inputName[str], formName[str]) |
touches a field (isTouched = true) |
resetField | (formName[str]) |
resets a field |
resetForm | (formName[str]) |
resets a form |
validateField | (formName[str]) |
touches a field and checks if it is valid |
validateForm | (formName[str]) |
touch the form fields and check if it is valid |
isFormValid | (formName[str]) |
promise that returns a boolean |
*formName: required only when you have more than one form
Customize validation messages globally
Vue
Set validate on blur
Vue
Validations
alphabetic
- default message: Must be a alphabetic value
- type: Boolean
alphabetic: true
alpha
- default message: Must only contain letters and numbers
- type: Boolean
alpha: true
pattern
- default message: Invalid, try again
- type: String
pattern: /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+*@[A-Z0-9-]++$/i
numeric
- default message: Must be a numeric value
- type: Boolean
numeric: true
required
- default message: Field is required
- type: Boolean
required: true
custom
- default message: Campo inválido
- type: Array
custom: value === '123' typeof value === 'string'
customAsync
- default message: Campo inválido
- type: Array
customAsync: