Проверка формы - это функция, которая не встроена в Vue.js.
Однако нам все еще очень нужна эта функция.
В этой статье мы рассмотрим, как добавить базовую проверку формы с помощью библиотеки Vee-Validate.
Начиная
Мы можем начать с установки пакета.
Для его установки запускаем:
npm install vee-validate --save
Затем мы можем зарегистрировать плагин ValidationProvider
, написав:
import Vue from "vue"; import App from "./App.vue"; import { ValidationProvider } from "vee-validate"; Vue.component("ValidationProvider", ValidationProvider); Vue.config.productionTip = false; new Vue({ render: h => h(App) }).$mount("#app");
in main.js
.
Таким образом, мы можем использовать его во всем приложении.
Мы также можем импортировать extend
для создания наших собственных правил проверки:
import Vue from "vue"; import App from "./App.vue"; import { ValidationProvider, extend } from "vee-validate"; extend("secret", { validate: value => value === "secret", message: "wrong word" }); Vue.component("ValidationProvider", ValidationProvider); Vue.config.productionTip = false; new Vue({ render: h => h(App) }).$mount("#app");
value
имеет введенное значение, и мы возвращаем true
, если оно действительно, и false
в противном случае.
message
- это сообщение об ошибке проверки формы, которое мы будем отображать.
Vue.component(“ValidationProvider”, ValidationProvider);
сделает компонент ValidationProvider
доступным глобально.
Основное использование
Мы можем добавить компонент ValidationProvider
в наше приложение, написав:
<template> <div> <ValidationProvider rules="secret" v-slot="{ errors }"> <input v-model="email" type="text"> <span>{{ errors[0] }}</span> </ValidationProvider> </div> </template> <script> export default { data(){ return { email: '' } } }; </script>
Если мы введем «секрет», то ничего не увидим.
В противном случае мы увидим сообщение об ошибке «неправильное слово», которое мы установили ранее.
errors
содержит сообщения об ошибках, возвращаемые валидатором, которые были у нас раньше.
Регистрация компонентов
Если мы просто хотим использовать компонент ValidationProvider
в одном компоненте, мы можем написать:
import { ValidationProvider } from 'vee-validate'; export default { components: { ValidationProvider } };
прописать ValidationProvider
в компоненте.
Аргументы правила
Мы можем добавлять аргументы в правила.
Например, мы можем написать:
extend("minLength", { validate(value, args) { return value.length >= args.length; }, params: ["length"], message: "too short" });
У нас есть validate
метод с параметром args
.
args
может иметь любое свойство, указанное свойством params
.
Следовательно, в этом случае мы можем иметь свойство length
ion args
.
Чтобы использовать его, мы можем написать:
<template> <div> <ValidationProvider rules="minLength:5" v-slot="{ errors }"> <input v-model="value" type="text"> <span>{{ errors[0] }}</span> </ValidationProvider> </div> </template> <script> export default { data() { return { value: "" }; } }; </script>
У нас есть:
minLength:5
установить args.length
на 5.
Таким образом, мы получим сообщение об ошибке, если длина value
меньше 5.
Множественные аргументы
У нас может быть несколько аргументов в нашем validate
методе.
Например, мы можем написать:
extend("length", { validate(value, { min, max }) { return value.length >= min && value.length <= max; }, params: ["min", "max"], message: "too short" });
Затем мы можем использовать его, написав:
<template> <div> <ValidationProvider rules="length:5,10" v-slot="{ errors }"> <input v-model="value" type="text"> <span>{{ errors[0] }}</span> </ValidationProvider> </div> </template> <script> export default { data() { return { value: "" }; } }; </script>
Мы реструктурировали args
в min
и max
в аргументах.
Затем мы передаем аргументы через запятую.
Затем, если мы введем что-то, длина которого меньше 5 или больше 10 символов, мы увидим сообщение об ошибке.
Vee-Validate автоматически передаст любое количество параметров и поместит их в args
.
Но размещение имен свойств в params
позволит нам получить их по ключу, а не в виде массива.
Итак, мы можем написать что-то вроде:
rules="one_of:1,2,3,4,5,6,7,8"
и args
будет [1, 2, 3, 4, 5, 6, 7, 8]
, если мы определили метод validate
для правила one_of
.
Сообщения
Мы можем вернуть сообщение в функции проверки в качестве альтернативы установке их в message
.
Например, мы можем написать:
import Vue from "vue"; import App from "./App.vue"; import { ValidationProvider, extend } from "vee-validate"; extend("positive", value => { if (value >= 0) { return true; } return "please enter a positive number"; }); Vue.component("ValidationProvider", ValidationProvider); Vue.config.productionTip = false; new Vue({ render: h => h(App) }).$mount("#app");
Тогда мы можем написать:
<template> <div> <ValidationProvider rules="positive" v-slot="{ errors }"> <input v-model="value" type="text"> <span>{{ errors[0] }}</span> </ValidationProvider> </div> </template> <script> export default { data() { return { value: "" }; } }; </script>
и мы увидим сообщение «введите положительное число», если введем что-либо, кроме положительного числа.
Заключение
Vee-Validate - это простой в использовании пакет для добавления возможностей проверки формы в приложение Vue.
Это намного проще, чем проверять вводимые данные с помощью собственного кода.
JavaScript на простом английском языке
Вы знали, что у нас четыре публикации и канал на YouTube? Найдите их все на plainenglish.io и подпишитесь на наш канал YouTube!