el-form中的rules未生效的解决方法

当在使用element-uiel-form组件中配置rules进行表单验证时,有时会遇到rules未生效的问题。下面我们将介绍几种解决方法。

方法一:手动触发验证

当我们使用el-form组件配合rules进行表单校验时,需要在提交表单时调用validate方法触发表单校验。但有时由于各种原因,validate方法失效,可尝试手动触发验证。

<template>
  <el-form ref="formRef" :rules="rules" :model="form" label-width="80px">
    <el-form-item label="用户名" prop="username">
      <el-input v-model="form.username"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="password">
      <el-input type="password" v-model="form.password"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="handleSubmit">提交</el-button>
    </el-form-item>
  </el-form>
</template>
<script>
export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      },
      rules: {
        username: [
          { required: true, message: '请输入用户名', trigger: 'blur' }
        ],
        password: [
          { required: true, message: '请输入密码', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    handleSubmit() {
      this.$refs.formRef.validate((valid) => {
        if (valid) {
          console.log('校验通过')
          // 提交表单操作
        } else {
          console.log('校验失败')
        }
      })
    },
  }
}
</script>

如果以上代码在提交时未触发表单校验,可尝试在handleSUbmit方法中使用this.$refs.formRef.validate()手动触发表单校验。这样就能保证表单校验的有效性。

方法二:修改rules的prop属性的大小写

在使用el-form组件时,该组件会自动将rulesprop属性转换为小写,而model中属性为大小写敏感。如果在rules中的prop属性在大小写方面与model不一致,则会导致表单校验失败。例如:

<template>
  <el-form :model="form" :rules="rules" ref="formRef" label-width="80px">
    <el-form-item label="姓名" prop="name">
      <el-input v-model="form.name"></el-input>
    </el-form-item>
    <el-form-item label="手机号" prop="phoneNum">
      <el-input v-model="form.phoneNum"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="handleSubmit">提交</el-button>
    </el-form-item>
  </el-form>
</template>
<script>
export default {
  data() {
    return {
      form: {
        name: '',
        phoneNum: ''
      },
      rules: {
        name: [
          { required: true, message: '请输入姓名', trigger: 'blur' }
        ],
        phoneNum: [
          { required: true, message: '请输入手机号', trigger: 'blur' },
          { pattern: /^1[3456789]\d{9}$/, message: '手机号格式不正确', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    handleSubmit() {
      this.$refs.formRef.validate(valid => {
        if (valid) {
          console.log('校验通过')
          // 提交表单操作
        } else {
          console.log('校验失败')
        }
      })
    }
  }
}
</script>

以上代码校验phoneNum时校验失败,是因为rules中的prop属性为phoneNum,而model中的属性为phoneNum,大小写存在差异。我们只需将其改为一致即可。

<template>
  <el-form :model="form" :rules="rules" ref="formRef" label-width="80px">
    <el-form-item label="姓名" prop="name">
      <el-input v-model="form.name"></el-input>
    </el-form-item>
    <el-form-item label="手机号" prop="phonenum">
      <el-input v-model="form.phonenum"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="handleSubmit">提交</el-button>
    </el-form-item>
  </el-form>
</template>
<script>
export default {
  data() {
    return {
      form: {
        name: '',
        phonenum: ''
      },
      rules: {
        name: [
          { required: true, message: '请输入姓名', trigger: 'blur' }
        ],
        phonenum: [
          { required: true, message: '请输入手机号', trigger: 'blur' },
          { pattern: /^1[3456789]\d{9}$/, message: '手机号格式不正确', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    handleSubmit() {
      this.$refs.formRef.validate(valid => {
        if (valid) {
          console.log('校验通过')
          // 提交表单操作
        } else {
          console.log('校验失败')
        }
      })
    }
  }
}
</script>

通过以上两种方法,应该能够解决el-form组件中的rules未生效问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:el-form中的rules未生效的解决方法 - Python技术站

(2)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 手写vite插件教程示例

    首先,我们需要明确几个概念: Vite:一款轻量、快速的 Web 开发构建工具。 插件(Plugin):能够扩展 Vite 的功能,增强开发体验。 下面是手写 Vite 插件的完整攻略: 1. 确定插件需求 在开始编写插件之前,我们要先明确需要实现的功能。可以查看 Vite 的官方插件文档,进行参考和借鉴。例如,我们想要编写一个 Vite 插件来自动添加时间…

    Vue 2023年5月27日
    00
  • Vue中的nextTick方法详解

    下面是Vue中的nextTick方法详解的完整攻略。 什么是nextTick方法 nextTick方法是Vue提供的一个异步操作工具,它可以让我们在DOM更新之后执行一些操作。它的作用是在下次DOM更新循环结束之后执行延迟回调,用于获得更新后的DOM。因此,使用nextTick方法可以让我们更加方便地操作更新后的DOM。 nextTick方法的基本应用 在V…

    Vue 2023年5月28日
    00
  • 一篇文章带你了解Vue组件的创建和使用

    当我们在开发Vue应用时,组件化是Vue应用开发中的一个非常重要的概念,因为Vue的组件化和模块化让我们能够更好地管理和复用代码。本文将带您了解如何创建和使用Vue组件的完整攻略。 1. 创建Vue组件 单文件组件 单文件组件是Vue组件的一种写法,它将template、script、style写在同一个文件中,使用.vue为后缀名。下面是一个简单的例子: …

    Vue 2023年5月28日
    00
  • 教你60行代码实现一个迷你响应式系统vue

    如何用60行代码实现迷你响应式系统Vue 简介 Vue是一款流行的JavaScript框架,其拥有强大的响应式系统,可以方便地实现数据绑定及视图更新。本文将介绍如何用60行代码实现一个迷你的Vue响应式系统,以更好地理解Vue原理。 响应式系统的实现 响应对象Reactive 我们首先需要实现一个响应对象Reactive,用于监听对象的变化并触发更新。该响应…

    Vue 2023年5月27日
    00
  • Vue中如何使用mock模拟数据

    下面我会为您详细讲解在Vue中如何使用mock模拟数据的完整攻略。 1. 什么是Mock Mock(模拟数据)是指在前端开发中,由于后端接口还未开发完成,前端开发需要提前模拟数据进行开发的一种手段。mock可以在前端使用虚拟数据进行开发,便于前端更好地进行模块开发、调试、测试等。 2. 如何使用mock 2.1 安装mockjs 我们可以使用npm安装moc…

    Vue 2023年5月28日
    00
  • 浅谈Vue数据响应

    浅谈Vue数据响应 Vue作为一款现代化的前端框架,在数据响应方面使用了响应式编程的思想,以方便开发者管理数据。在本文中,我们将深入探讨Vue数据响应的相关知识。 什么是Vue数据响应 Vue数据响应是指当Vue的组件状态(data)发生变化时,视图自动更新。Vue通过使用响应式的观察者模式实现数据和UI的双向绑定(Two-Way-Binding),即当数据…

    Vue 2023年5月28日
    00
  • Vue 2.0 基础详细

    Vue 2.0 基础详细攻略 Vue.js是一款流行的JavaScript框架,它可以使我们更容易地编写可重用的组件以及可交互的应用程序。Vue 2.0是Vue.js的最新版本,它具有更高的性能和更好的开发体验。在本文中,我们将介绍Vue.js 2.0的基础知识和相关概念,以及如何使用Vue.js 2.0构建现代Web应用程序。 Vue.js基础 Vue.j…

    Vue 2023年5月27日
    00
  • webpack4手动搭建Vue开发环境实现todoList项目的方法

    下面是“webpack4手动搭建Vue开发环境实现todoList项目的方法”的完整攻略。 步骤一:初始化项目 先创建一个新的文件夹,进入文件夹中进行以下操作: 1.使用npm初始化项目: npm init 根据提示输入项目信息。 2.安装webpack和webpack-cli: npm install webpack webpack-cli –save-…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部