Cet article présente principalement l'utilisation de la vérification du formulaire d'élément dans Vue. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
, donc comment l'utiliser dans Element et comment l'utiliser avec élégance se trouve dans cet article. async-validator
se compose de 3 parties principales async-validator
Options
Validate
Rules
const validator = new Validator(rules)
validator.validate(source, callback)
ci-dessus correspond au validator.validate
dans Element , mais il a été modifié. Et lorsque this.$refs[refName].validate
est défini dans Element, cela <el-form :model='form'>
est :model='form'
. Le nom de champ de form
, tel que source
est source
, alors tant que source.name
définit le même nom de champ form.name
que <el-form-item prop='name'>
, il peut correspondre au source
dans name
. <el-form :rules='rules'>
rules.name
Il est très important que
soient identiques pour la vérification. rules.字段名
source.字段名
<template> <el-form :model='form' ref='domForm' :rules='rules'> <el-form-item prop='name' lable='名字'> <el-input v-model='form.name'> </el-form-item> </el-form> </template>
export default { data() { this.rules = { name: { type: 'string', required: true, trigger: 'blur' } } return { form: { name: '' } } }, methods: { submit() { this.$refs.domForm.validate(valid => { if (!valid) { // 验证不通过 } // 验证通过后的处理... }) } } }
validate(callback)
Par exemple, j'ai deux champs
. firstName
est obligatoire, tandis que lastName
est facultatif ; et la longueur de firstName
doit être supérieure à 1 et inférieure à 4, tandis que la longueur de lastName
doit être supérieure à 1 et inférieure à 6. . Ensuite, nous devons écrire deux règles différentes. Maintenant, ce n'est que 2 champs, rien. S'il y a de nombreux champs avec des exigences différentes, alors nous devons écrire de nombreuses règles différentes et de nombreuses règles ? N'est-ce pas ennuyeux ? Peut-il être réutilisé ? firstName
lastName
{ name(rule, value, callback, source, options) {} }
{ name: { type: 'string', required: true } }
{ name: [{ type: 'string' }, { required: true }] }
options
Encapsulation simple de certaines règles couramment utilisées
// 返回一个规则数组,必填且字符串长度在2~10之间 export const name = (msg, min = 2, max = 10, required = true) => ([ { required, message: msg, trigger: 'blur' }, { min, max, message: `长度在${min}~${max}个字符`, trigger: 'blur' } ]) // 邮箱 export const email = (required = true) => ([ { required, message: '请输入邮箱', trigger: 'blur' }, { type: 'email', message: '邮箱格式不对', trigger: 'blur' } ]) /* 自定义验证规则 */ // 大于等于某个整数 const biggerAndNum = num => (rule, v, cb) => { const isInt = /^[0-9]+$/.test(v) if (!isInt) { return cb(new Error('要求为正整数')) } if (v < num) { return cb(new Error(`要求大于等于${num}`)) } return cb() } export const biggerInt = (int, required = true) => ([ { required, message: '必填', trigger: 'blur' }, { validator: biggerAndNum(int), trigger: 'blur' } ])
export default class CreateRules { constructor() { super() this.rules = [] } need(msg = '必填', trigger = 'blur') { this.rules.push({ required: true, message: msg, trigger }) return this } url(message = '不是合法的链接', trigger = 'blur') { this.rules.push({ type: 'url', trigger, message }) return this } get() { const res = this.rules this.rules = [] return res } } const createRules = new CreateRules() //规则 const needUrl = createRules.need().url().get() const isUrl = createRules.url().get() // imgUrl必填且是链接;href可选不填,如果填写必须是链接 const rules = { imgUrl: needUrl, href: isUrl } // deep rule 定义 // urls是数组,长度大于1 // urls的元素是链接 const urls = ['http://www.baidu.com', 'http://www.baidu.com'] const rules = { urls: { type: 'array', min: 1, defaultField: isUrl } }
Recommandations associées :
Éléments de base de la validation du formulaire d'élément dans VueComment résoudre les attributs lorsque pour des objets dans Problèmes Vue avec les entiers non négatifsCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!