jjzjj

element ui 动态添加表单实现验证规则

南^思 2023-07-27 原文

前言:不知道大家有没有在开发过程中遇到过动态的去添加表单生成同样的验证规则进行校验,我也在这方面踩过坑,并且借鉴别人的观点加上自己的想法,解决了动态添加表单实现验证规则的方法,现在分享给大家,希望能帮助到正在为此发愁的你

动态的添加表单项,相信大家都可以做到,这里就不做过多的解释了,那么如何实现多个重复表单的验证?下面是我结合element 官网和自身遇到的处理方式,呈现给大家。

实现验证规则,我们要注意那些东西

1,prop 绑定的参数设置成对应的必填校验的字段名

<el-form-item label="姓名" prop="name" :rules="rules.name">
    <el-input v-model="formData.name"></el-input>
</el-form-item>

2,rules 表单验证规则

<el-form :model="formData" :rules="rules" ref="formData">
</el-form>

3,保证数据源是来源于form表单绑定数据

4,默认值

export default {
    data(){
        return{
            formData:{
                name:"",
                otherMsg:[
                    {
                        professional:""
                    }
                ]
                
            }
        }
    }
}

5, 循环出其他信息,默认展示一条职业信息,可以新增n个职业信息,对每个新增数据进行必填校验验证规则

提醒:prop 绑定的三个参数

  1. 第一个参数:循环的数组数据
  2. 第二个参数:每条数据的索引值(下标)
  3. 第三个参数:必填项校验字段名
<el-form-item
    v-for="(msg, index) in formData.otherMsg"
    :label="'职业' + (index + 1)"
    :key="index"
    :prop="'otherMsg.' + index + '.professional'"
    :rules="rules.professional"
>
     <el-input v-model="msg.professional"></el-input>
     <el-button @click.prevent="removeDomain(msg)">删除</el-button>
</el-form-item>

下面是实现动态增加表单校验的完整代码

<template>
  <div class="form_container">
    <el-form :model="formData" :rules="rules" ref="formRef" label-width="100px">
      <el-form-item label="姓名" prop="name" :rules="rules.name">
        <el-input v-model="formData.name"></el-input>
      </el-form-item>
      <el-form-item
        v-for="(msg, index) in formData.otherMsg"
        :label="'职业' + (index + 1)"
        :key="index"
        :prop="'otherMsg.' + index + '.professional'"
        :rules="rules.professional"
      >
        <el-input v-model="msg.professional"></el-input>
        <el-button @click.prevent="removeDomain(msg)">删除</el-button>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('formRef')">提交</el-button>
        <el-button @click="addDomain">新增</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  data() {
    return {
      formData: {
        otherMsg: [
          {
            professional: ""
          }
        ],
        name: ""
      }
    }
  },
  computed: {
    rules() {
      return {
        professional: { required: true, message: "个人信息职业不能为空", trigger: "blur" },
        name: { required: true, message: " 姓名不能为空", trigger: "blur" }
      }
    }
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          console.log(this.formData)
          alert("提交成功")
        } else {
          console.log("提交失败")
          return false
        }
      })
    },
    removeDomain(item) {
      var index = this.formData.otherMsg.indexOf(item)
      if (index !== -1) {
        this.formData.otherMsg.splice(index, 1)
      }
    },
    addDomain() {
      this.formData.otherMsg.push({
        professional: ""
      })
    }
  }
}
</script>
<style>
.form_container {
  padding: 20px;
}
</style>

有关element ui 动态添加表单实现验证规则的更多相关文章

  1. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  2. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  3. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  4. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  5. ruby-on-rails - 如果为空或不验证数值,则使属性默认为 0 - 2

    我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val

  6. ruby - 将 Bootstrap Less 添加到 Sinatra - 2

    我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它

  7. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  8. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  9. ruby-on-rails - 如何将验证与模型分开 - 2

    我有一些非常大的模型,我必须将它们迁移到最新版本的Rails。这些模型有相当多的验证(User有大约50个验证)。是否可以将所有这些验证移动到另一个文件中?说app/models/validations/user_validations.rb。如果可以,有人可以提供示例吗? 最佳答案 您可以为此使用关注点:#app/models/validations/user_validations.rbrequire'active_support/concern'moduleUserValidationsextendActiveSupport:

  10. ruby-on-rails - 跳过状态机方法的所有验证 - 2

    当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested

随机推荐