vee-validate表单校验的使用方法

VeeValidate 是 Vue.js 表单验证框架。
VeeValidatehttps://vee-validate.logaretm.com/

第一步:安装

 npm i vee-validate@4.0.3

第二步:导入

// 导入组件
import { Form, Field } from 'vee-validate'

export default {
  name: 'LoginForm',
  components: {
    Form, Field
  }
}

第三步:使用 Form 组件

<Form class="form">
···
</Form>

第四步:使用 Field 组件,添加表单项目校验

<Form class="form">
    ···
    <!-- 将input元素替换为Field组件 -->
    <Field name="password" type="password" placeholder="请输入密码" />
</Form>

自定义组件替换方法 (自定义组件必须支持v-model方法)

<!-- <AppCheckbox v-model="form.isAgree" /> -->
<Field as="AppCheckbox" name="isAgree" v-model="form.isAgree"/>

定义 校验规则

// 定义校验规则提供给vee-validate组件使用
export default {
  // 校验account
  account (value) {
    // value是将来使用该规则的表单元素的值
    // 1. 必填
    // 2. 6-20个字符,需要以字母开头
    // 如何反馈校验成功还是失败,返回true才是成功,其他情况失败,返回失败原因。
    if (!value) return '请输入用户名'
    if (!/^[a-zA-Z]\w{5,19}$/.test(value)) return '字母开头且6-20个字符'
    return true
  }
}

在组件中使用定义好的规则

<script>
import { ref, reactive } from 'vue-demi'
import { Form, Field } from 'vee-validate'
// 导入验证规则对象
import veeSchema from '@/utils/vee-validate-schema'
export default {
  name: 'LoginForm',
  components: {
    Form, Field
  },
  setup () {
    ...

    // 表单对象数据
    const form = reactive({
      isAgree: true,
      account: null,
      password: null,
      mobile: null,
      code: null
    })
    // 校验规则对象 (属性名和Field 组件的name属性对应)
    const mySchema = {
      account: veeSchema.account,
      password: veeSchema.password,
      mobile: veeSchema.mobile,
      code: veeSchema.code,
      isAgree: veeSchema.isAgree
    }
    return {
      ...,
      form,
      mySchema
    }
  }
}
</script>

在Form组件中通过validation-schema 属性传递 校验规则对象

<Form class="form"  :validation-schema="mySchema" autocomplete="off">

其实就是把input改成 Field 组件,默认解析成input

Field 添加name属性,作用是指定使用schema中哪个校验规则

Form 添加 v-slot="{errors}" 使用作用域插槽暴露 errors 错误对象

<Form class="form"  :validation-schema="mySchema" autocomplete="off" v-slot="{errors}">

通过 errors['校验规则名称'] 取出错误信息,有则显示,无即隐藏

<Form class="form"  :validation-schema="mySchema" autocomplete="off" v-slot="{errors}">
    ···
    <!-- 将input元素替换为Field组件 -->
    <Field name="password" type="password" placeholder="请输入密码" />
    ...
    <!-- 错误提示 -->
    <div class="error" v-if="errors.password"><i class="iconfont icon-warning" />{{errors.password}}</div>
</Form>

组件提供了一个resetForm方法可以清除效验结果

<Form class="form" ref="formRef"  :validation-schema="mySchema" autocomplete="off" v-slot="{errors}">

...

// form表单元素
const formRef = ref(null)
// 使用Form 组件提供 resetForm 方法对表单进行清除校验结果
formRef.value.resetForm()

 

需要在点击登录的时候对整体表单进行校验

    // 登录按钮
    // 需要在点击登录的时候对整体表单进行校验
    const login = async () => {
      // Form组件提供了一个 validate 函数作为整体表单校验,当是返回的是一个promise
      const valid = await formRef.value.validate()
      console.log(valid)
    }

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于uni-app中的校验,你可以使用一些常见的方法和插件来实现。 1. 使用HTML5属性:可以使用HTML5的属性来进行基本的前端校验,如`required`、`maxlength`、`minlength`等。这些属性可以在input标签中直接添加。 2. 自定义校验方法:可以使用JavaScript或Vue组件中的方法来进行自定义的校验逻辑。你可以在提交时触发校验方法,然后根据需求进行相应的校验逻辑,比如检查输入的格式是否正确、是否符合要求等。 3. 使用第三方校验插件:uni-app支持引入第三方校验插件来简化校验的过程。一些常见的插件包括VeeValidate、AsyncValidator等,它们提供了丰富的校验规则和功能,可以更高效地完成校验。 以下是一个使用VeeValidate进行校验的示例: 首先,安装VeeValidate插件: ``` npm install vee-validate ``` 然后,在你的uni-app项目入口文件中引入和配置VeeValidate: ```javascript import Vue from 'vue'; import VeeValidate from 'vee-validate'; import zh_CN from 'vee-validate/dist/locale/zh_CN'; Vue.use(VeeValidate, { locale: 'zh_CN', }); VeeValidate.Validator.localize('zh_CN', zh_CN); ``` 接下来,在你的组件中使用VeeValidate进行校验: ```vue <template> <form @submit="submitForm"> <input v-model="name" name="name" v-validate="'required'" :class="{ 'is-invalid': errors.has('name') }"> <span v-show="errors.has('name')" class="error">{{ errors.first('name') }}</span> <input v-model="email" name="email" v-validate="'required|email'" :class="{ 'is-invalid': errors.has('email') }"> <span v-show="errors.has('email')" class="error">{{ errors.first('email') }}</span> <button type="submit">Submit</button> </form> </template> <script> export default { methods: { submitForm() { this.$validator.validateAll().then(result => { if (result) { // 校验通过,进行提交操作 } }); }, }, }; </script> ``` 这是一个简的示例,你可以根据具体的需求和业务逻辑来扩展和调整校验的规则和方法。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李公子丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值