0


Element Plus 表单验证详解

Element Plus 是基于 Vue 3 的一套组件库,它提供了许多组件帮助开发者快速构建现代 Web 应用。本文将详细介绍如何在 Element Plus 中进行表单验证,并通过具体示例解释每个部分的用法。

安装 Element Plus

在使用 Element Plus 之前,需要先安装它。假设你已经有一个 Vue 3 项目,可以通过 npm 或 yarn 安装 Element Plus:

  1. npminstall element-plus

或者:

  1. yarnadd element-plus

安装完成后,在项目入口文件中引入 Element Plus:

  1. import{ createApp }from'vue'import ElementPlus from'element-plus'import'element-plus/dist/index.css'import App from'./App.vue'const app =createApp(App)
  2. app.use(ElementPlus)
  3. app.mount('#app')

创建表单

首先,使用 Element Plus 提供的组件创建一个基本的表单结构:

  1. <template>
  2. <el-form :model="form" ref="formRef" :rules="rules" label-width="120px">
  3. <el-form-item label="用户名" prop="username">
  4. <el-input v-model="form.username"></el-input>
  5. </el-form-item>
  6. <el-form-item label="邮箱" prop="email">
  7. <el-input v-model="form.email"></el-input>
  8. </el-form-item>
  9. <el-form-item label="密码" prop="password">
  10. <el-input type="password" v-model="form.password"></el-input>
  11. </el-form-item>
  12. <el-form-item>
  13. <el-button type="primary" @click="submitForm">提交</el-button>
  14. <el-button @click="resetForm">重置</el-button>
  15. </el-form-item>
  16. </el-form>
  17. </template>
  18. <script>
  19. import { reactive, ref } from 'vue'
  20. export default {
  21. setup() {
  22. const form = reactive({
  23. username: '',
  24. email: '',
  25. password: ''
  26. })
  27. const rules = {
  28. username: [
  29. { required: true, message: '请输入用户名', trigger: 'blur' }
  30. ],
  31. email: [
  32. { required: true, message: '请输入邮箱地址', trigger: 'blur' },
  33. { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }
  34. ],
  35. password: [
  36. { required: true, message: '请输入密码', trigger: 'blur' },
  37. { min: 6, message: '密码长度不能小于6位', trigger: 'blur' }
  38. ]
  39. }
  40. const formRef = ref(null)
  41. const submitForm = () => {
  42. formRef.value.validate((valid) => {
  43. if (valid) {
  44. alert('提交成功!')
  45. } else {
  46. console.log('提交失败!')
  47. return false
  48. }
  49. })
  50. }
  51. const resetForm = () => {
  52. formRef.value.resetFields()
  53. }
  54. return {
  55. form,
  56. rules,
  57. formRef,
  58. submitForm,
  59. resetForm
  60. }
  61. }
  62. }
  63. </script>

代码解释

  1. **模板部分 (template)**:- <el-form>:整个表单的容器,绑定 model 属性到 form 对象,用于双向数据绑定。ref 用于在方法中引用表单,rules 用于设置验证规则,label-width 设置表单标签的宽度。- <el-form-item>:表单项容器。label 属性用于设置表单项的标签,prop 属性用于绑定验证规则。- <el-input>:输入框组件,使用 v-model 绑定数据。- <el-button>:按钮组件,用于提交和重置表单。
  2. **脚本部分 (script)**:- reactive:创建响应式对象 form,用于存储表单数据。- ref:用于创建对表单实例的引用 formRef。- rules:存储表单验证规则。- submitForm:提交表单时触发,调用 validate 方法验证整个表单。- resetForm:重置表单,将所有字段值重置为初始值,并移除校验结果。

表单验证详解

验证规则

  1. rules

对象中,每个字段对应一个数组,数组中包含一个或多个验证规则对象。每个验证规则对象可以包含以下属性:

  • required: 是否必填。
  • message: 验证失败时的提示信息。
  • trigger: 触发验证的事件类型,可以是 blurchange
  • type: 验证的数据类型,可以是 stringnumberbooleanmethodregexpintegerfloatarrayobjectenumdateurlhexemail
  • minmax: 限制输入的最小和最大长度(仅适用于 stringarray 类型)。
  • validator: 自定义验证函数。

自定义验证器

有时内置的验证规则可能无法满足需求,这时可以使用自定义验证器。自定义验证器是一个函数,接受三个参数:

  1. rule

  1. value

,和

  1. callback

下面是一个示例,演示如何添加一个自定义验证器来验证用户名是否已被占用:

  1. constcheckUsername=(rule, value, callback)=>{if(!value){returncallback(newError('请输入用户名'))}// 模拟异步验证setTimeout(()=>{if(value ==='admin'){callback(newError('用户名已被占用'))}else{callback()}},1000)}const rules ={username:[{validator: checkUsername,trigger:'blur'}]}

表单验证方法

Element Plus 提供了多个方法来控制表单验证:

  • validate(callback): 对整个表单进行验证。callback 会在验证完成后被调用,并接收一个布尔参数,表示验证是否通过。
  • validateField(prop, callback): 对某个字段进行验证。prop 是字段的属性名称,callback 是验证完成后的回调函数。
  • resetFields(): 重置表单,将所有字段值重置为初始值,并移除校验结果。
  • clearValidate(props): 移除表单项的校验结果。props 是需要移除校验的字段属性组成的数组,如果不传则移除所有字段的校验结果。

下面是这些方法的示例:

  1. constsubmitForm=()=>{
  2. formRef.value.validate((valid)=>{if(valid){alert('提交成功!')}else{
  3. console.log('提交失败!')returnfalse}})}constresetForm=()=>{
  4. formRef.value.resetFields()}constvalidateUsername=()=>{
  5. formRef.value.validateField('username',(valid)=>{if(valid){alert('用户名验证通过')}else{
  6. console.log('用户名验证失败')}})}constclearUsernameValidation=()=>{
  7. formRef.value.clearValidate(['username'])}

完整示例

下面是一个完整的示例,展示了如何使用 Element Plus 实现一个带有表单验证的表单:

  1. <template>
  2. <el-form :model="form" ref="formRef" :rules="rules" label-width="120px">
  3. <el-form-item label="用户名" prop="username">
  4. <el-input v-model="form.username"></el-input>
  5. </el-form-item>
  6. <el-form-item label="邮箱" prop="email">
  7. <el-input v-model="form.email"></el-input>
  8. </el-form-item>
  9. <el-form-item label="密码" prop="password">
  10. <el-input type="password" v-model="form.password"></el-input>
  11. </el-form-item>
  12. <el-form-item>
  13. <el-button type="primary" @click="submitForm">提交</el-button>
  14. <el-button @click="resetForm">重置</el-button>
  15. </el-form-item>
  16. </el-form>
  17. </template>
  18. <script>
  19. import { reactive, ref } from 'vue'
  20. export default {
  21. setup() {
  22. const form = reactive({
  23. username: '',
  24. email: '',
  25. password: ''
  26. })
  27. const checkUsername = (rule, value, callback) => {
  28. if (!value) {
  29. return callback(new Error('请输入用户名'))
  30. }
  31. // 模拟异步验证
  32. setTimeout(() => {
  33. if (value === 'admin') {
  34. callback(new Error('用户名已被占用'))
  35. } else {
  36. callback()
  37. }
  38. }, 1000)
  39. }
  40. const rules = {
  41. username: [
  42. { validator: checkUsername, trigger: 'blur' }
  43. ],
  44. email: [
  45. { required: true, message: '请输入邮箱地址', trigger: 'blur' },
  46. { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }
  47. ],
  48. password: [
  49. { required: true, message: '请输入密码', trigger: 'blur' },
  50. { min: 6, message: '密码长度不能小于6位', trigger: 'blur' }
  51. ]
  52. }
  53. const formRef = ref(null)
  54. const submitForm = () => {
  55. formRef.value.validate((valid) => {
  56. if (valid) {
  57. alert('提交成功!')
  58. } else {
  59. console.log('提交失败!')
  60. return false
  61. }
  62. })
  63. }
  64. const resetForm = () => {
  65. formRef.value.resetFields()
  66. }
  67. return {
  68. form,
  69. rules,
  70. formRef,
  71. submitForm,
  72. resetForm
  73. }
  74. }
  75. }
  76. </script>

总结

Element Plus 提供了强大且灵活的表单验证功能,能够满足各种复杂的表单验证需求。通过使用内置的验证规则和自定义验证器,可以实现对表单项的精确控制。希望本文能够帮助你更好地理解和使用 Element Plus 的表单验证功能。


本文转载自: https://blog.csdn.net/qq_21484461/article/details/139611255
版权归原作者 繁依Fanyi 所有, 如有侵权,请联系我们删除。

“Element Plus 表单验证详解”的评论:

还没有评论