vue:element-ui表单动态验证规则

这篇具有很好参考价值的文章主要介绍了vue:element-ui表单动态验证规则。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、需求:

实现当是否发送消息选择是时,业务类型字段必填。

vue:element-ui表单动态验证规则,vue.js,ui,javascript

vue:element-ui表单动态验证规则,vue.js,ui,javascript

二、实现:

当你在一个表单中使用 el-formel-form-item 来创建表单项时,el-form-item:rules 属性可以用来设置该表单项的验证规则。我们希望根据用户在 "是否发送消息" 这个表单项中的选择动态设置 "业务类型" 这个表单项的验证规则。

在 Vue 中,你可以使用绑定的方式 :rules 动态设置验证规则。这意味着你可以在 :rules 属性中绑定一个变量,然后根据这个变量的值来动态设置验证规则。

在代码中,通过以下几步来实现这个动态验证规则的功能:

  1. 在模板中:

    • 在 "是否发送消息" 这个表单项(el-form-item)中,我们使用 v-model 来绑定用户的选择到 form.ifSendMessage 属性。
    • 在 "业务类型" 这个表单项的 :rules 属性中,我们使用三元运算符 form.ifSendMessage === 1 ? rules.sendAppList : [] 来判断如果 "是否发送消息" 选择为是(值为 1),则应用 rules.sendAppList 规则,否则应用空数组 []
  2. rules 中:

    • rules 中,我们为 "是否发送消息" 这个表单项设置了基本的验证规则,确保用户进行选择。
    • 在 "业务类型" 这个表单项的验证规则中,我们使用了自定义验证函数。如果用户选择了是(form.ifSendMessage === 1),我们检查是否选择了业务类型,如果没有选择,则返回一个错误,否则返回验证通过。

这样,当用户选择是发送消息时,业务类型字段就会被要求必填,否则不会被要求必填。

1)关于validator

validator是element表单提供的一个rules验证事件

在 Element UI 表单组件中,validator 是用于自定义验证规则的一个事件。当使用 :rules 属性指定验证规则时,可以通过 validator 选项来提供一个自定义的验证函数。

在代码中,我们使用了自定义验证函数来判断 "业务类型" 字段的验证规则。具体来说,我们在 rules 中为 sendAppList 字段的验证规则提供了一个包含 validator 选项的对象:

sendAppList: [
  {
    required: true,
    message: '请选择业务类型',
    trigger: 'change',
    validator: (rule, value, callback) => {
      if (form.ifSendMessage === 1 && (!value || value.length === 0)) {
        callback(new Error('请选择业务类型'));
      } else {
        callback();
      }
    },
  },
],

这里,validator 是一个函数,接收三个参数:rulevaluecallback。在这个函数中,我们根据 "是否发送消息" 字段的值(form.ifSendMessage)来判断是否需要进行验证。如果用户选择发送消息(form.ifSendMessage === 1)且业务类型字段没有选择任何值,则调用 callback 函数返回一个错误。否则,调用 callback 表示验证通过

这种方式允许你根据不同的场景自定义验证逻辑,从而实现更灵活的表单验证。

2)为什么应用空数组 []

在 Element UI 表单组件中,rules 属性用于设置表单项的验证规则。当你在 :rules 中设置验证规则时,你可以为每个表单项指定一个验证规则数组。这个数组中的每个元素都是一个规则对象,用于描述该表单项的验证条件。

在上述代码中,我们为 sendAppList 字段设置的验证规则如下:

sendAppList: [
  {
    required: true,
    message: '请选择业务类型',
    trigger: 'change',
    validator: (rule, value, callback) => {
      if (form.ifSendMessage === 1 && (!value || value.length === 0)) {
        callback(new Error('请选择业务类型'));
      } else {
        callback();
      }
    },
  },
],

在这个验证规则中,我们使用了 validator 选项指定了一个自定义的验证函数。在这个函数中,我们通过判断 form.ifSendMessage 的值,决定是否执行验证逻辑。如果 form.ifSendMessage 的值为 1(即用户选择了“是”发送消息),并且 value(业务类型字段的值)为空或长度为 0,则执行 callback(new Error('请选择业务类型')) 表示验证失败,否则执行 callback() 表示验证通过。

当用户选择“否”发送消息时,我们不需要对业务类型字段进行额外的验证,因此为了确保不执行多余的验证逻辑,我们将验证规则设置为空数组 []

这样就确保了在用户选择“否”发送消息时,不会执行业务类型字段的验证逻辑,达到动态设置验证规则的目的。文章来源地址https://www.toymoban.com/news/detail-818049.html

3)代码:

<el-form-item label="是否发送消息:" prop="ifSendMessage">
  <el-radio-group v-model="form.ifSendMessage">
    <el-radio :label="1">是</el-radio>
    <el-radio :label="0">否</el-radio>
  </el-radio-group>
</el-form-item>
<el-form-item label="业务类型:" prop="sendAppList">
  <!-- 业务类型字段的内容 -->
  <el-select
    v-model="form.sendAppList"
    multiple
    filterable
    clearable
    collapse-tags
    style="width: 100%"
    placeholder="请选择"
    :rules="form.ifSendMessage === 1 ? rules.sendAppList : []"
  >
    <el-option
      v-for="item in appList"
      :key="item.itemCode"
      :label="item.itemName"
      :value="item.itemCode"
    >
    </el-option>
  </el-select>
</el-form-item>


rules: {
  // 其他规则...
  ifSendMessage: [
    { required: true, message: '请选择', trigger: 'change' },
  ],
  sendAppList: [
    {
      required: true,
      message: '请选择业务类型',
      trigger: 'change',
      validator: (rule, value, callback) => {
        if (form.ifSendMessage === 1 && (!value || value.length === 0)) {
          callback(new Error('请选择业务类型'));
        } else {
          callback();
        }
      },
    },
  ],
},

到了这里,关于vue:element-ui表单动态验证规则的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Avue组件或Element-UI动态修改rules验证规则或根据条件修改rules验证规则

    根据条件修改验证规则:el-form中若A为空,则B可为空,若A有值,则B必填,动态改变B的验证规则 在watch监听事件中,使用auve-form自带的:defaults.sync=\\\"defaults\\\"属性,来操作B的rules验证规则,此写法的效果好于el-form原生,因为设置为必填后会有必填标志* 使用watch监听A值的变化,若

    2024年02月12日
    浏览(52)
  • vue中elment-ui添加表单验证规则,以及动态增加的表单校验

    一、表单格式固定的添加表单验证 二、动态增加表单,添加表单验证

    2024年02月03日
    浏览(53)
  • Vue+Element-UI el-form表单动态检验

    业务需求: 表单el-form 有一表单项:发布时间 ,有5个选项:今天、24小时、近3天、近7天和自定义时间,其中当选择自定义时间时,后面跟着的日期时间选择器是必填的,选中其他选项时则不需要。这就需要做到表单的动态检验。 最开始实现方式是在当前表单项中设置规则

    2024年02月11日
    浏览(57)
  • Vue + Element ui 实现动态表单,包括新增行/删除行/动态表单验证/提交功能

    原创/朱季谦 最近通过Vue + Element ui实现了动态表单功能,该功能还包括了动态表单新增行、删除行、动态表单验证、动态表单提交功能,趁热打铁,将开发心得记录下来,方便以后再遇到类似功能时,直接拿来应用。 简化的页面效果图如下: 最开始,我是用了纯粹的表格形

    2024年02月04日
    浏览(48)
  • VUE element-ui实现表格动态展示、动态删减列、动态排序、动态搜索条件配置、表单组件化。

        1、本组件支持列表的表头自定义配置,checkbox实现 2、本组件支持列表列排序,vuedraggable是拖拽插件,上图中字段管理里的拖拽效果 ,需要的话请自行npm install 3、本组件支持查询条件动态配置,穿梭框实现 https://download.csdn.net/download/askuld/88216937

    2024年01月16日
    浏览(62)
  • Element-ui 多表单同时验证

     如上图表单  [列二 列三 ]  由列一循环出来的数据  所用的校验规则相同   方法一:         拿到表单list数据循环遍历(通过正则/其他)进行校验   上图校验按实际需求只要不为空即可 方法二:         通过element表单的rules属性进行校验   定义好rules校验规则配合方法v

    2024年02月16日
    浏览(47)
  • 如何实现element-UI循环表单以及数据验证

    可能看到这篇文章,你很困惑。为啥要循环表单?其实并不难理解,我们以系统设置页面为例,一般直接按照客户需要来写表单就行了。但是吧,慢慢你会发现这并不高效,因为存在很多客户,他们对自己的需求几乎是模糊不清的,系统菜单就会经常变动,这就很浪费时间。

    2024年02月11日
    浏览(43)
  • element-ui 动态表单

    背景:朋友入职新公司,做项目重构,根据后端返回表单内容,动态生成表单,于是自己实现了下,哪里写的不好,欢迎各位提建议: 因为开关和多选框默认值是非空字符串,所以在created生命周期单独处理了下

    2024年02月11日
    浏览(85)
  • 解决Element-UI清空表单及验证不生效的问题

    由于我将编辑与新增时,表单使用的是同一个data中的数据,这就导致出现了我点击了编辑后,再次点击新增时,出现了数据依旧是刚才编辑表单中的数据。 通过 手动给表单中的字段赋值 ,期初时,能达到清除表单的效果,但是又出现了新的问题。 表单验证不通过。在一打

    2024年02月13日
    浏览(44)
  • 动态绑定表单的rules---element-ui

    在 Vue 3 中,你可以使用  refs  属性与  v-model  指令来动态绑定表单数据和验证规则。要动态删除绑定的验证规则,可以通过修改  ref  的 $rules 属性来实现。 例如,假设你有一个简单的表单组件,它使用  ref  来绑定表单数据和验证规则: 如果要动态删除  rules.name  的验

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包