【vue】element-ui的form数组表单验证(循环表单验证)

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

基于vue2.0element-uiform表单验证比较简单,但是有些同学可能对于数组类型的表单验证无从下手,这里我基于一个我自己项目中的例子,展示一下怎么进行数组的表单验证。

项目截图:

el-form数组验证,vue,vue,javascript,前端,elementui

上代码,为了让大家看起来比较清晰,我删掉了无关的代码:

<template>
<div class="create_send">
   <el-form ref="refForm" :model="formData" :rules="rules">
        <el-form-item label="选择事件:" prop="eventCode">
            <el-select v-model="formData.eventCode" placeholder="请选择">
                <el-option
                v-for="item in eventoptions"
                :key="item.value"
                :label="item.label"
                :value="item.value">
                </el-option>
            </el-select>
        </el-form-item>
    </el-form>
    <el-form  v-for="(item,index) in formData.ruleList" :ref="`refForm${index}`" :key="index" :model="item" :rules="rules">
        <el-form-item label="倒计时天数:" prop="ruleString" class="err_position">
            <el-input v-model="item.ruleString" style="width:207px;float:left" placeholder="请输入内容"></el-input>
        </el-form-item>
    </el-form>
</div>
</template>
<script>
import { sysDictMoreType } from '@/api/neo/shareHouse'
export default {
    data(){
        return {
            formData:{
                eventCode:"",
                eventName:"",
                ruleList:[
                    {
                        ruleString:""
                    }
                ]
            },
            eventoptions:[],
            rules:{
                eventCode:[{required:true,message:"请选择事件类型",trigger:"change"}],
                ruleString:[{required:true,message:"请填写倒计时天数",trigger:"blur"}],
            }
        }
    },
    mounted(){
        this.getSelectData()
    },
    methods:{
        confirm(){
            Promise.all([
                this.validateForm("refForm"),
                ...this.formData.ruleList.map((item,index)=>this.validateForm(`refForm${index}`))
            ]).then(res=>{
                if(res) {
                    // 表单验证通过
                }
            })
        },
        validateForm(refs){
            let valiForm = this.$refs?.[refs].validate?this.$refs?.[refs]:this.$refs?.[refs][0]
            return new Promise((resolve,reject)=>{
                valiForm.validate(res=>{
                    if(res) resolve()
                    else reject()
                })
            })
        },
        getSelectData(){//获取下拉选择框列表
            sysDictMoreType(["im_event_code"]).then(res=>{
                this.eventoptions = res?.data?.im_event_code||[]
            })
        },
        addEvent(){//新增一条发送时间
            this.formData.ruleList.push({
                ruleString:""
            })
        },
        deleteEvent(){//删除一条发送时间,忽略},
    },
}
</script>
<style lang="scss">
//节省篇幅,删掉了css
</style>

咱们把数组验证的部分拿出来看:

<el-form  v-for="(item,index) in formData.ruleList"  :key="index" :model="item" :rules="rules">
     <el-form-item label="倒计时天数:" prop="ruleString" class="err_position">
         <el-input v-model="item.ruleString" style="width:207px;float:left" placeholder="请输入内容"></el-input>
     </el-form-item>
 </el-form>

上边代码最关键的地方就是:

:ref="`refForm${index}`"

因为ref不能相同,咱们取到index用来拼接不同的ref字符串。
然后在表单验证的时候就可以循环的进行获取refs并验证了,下面这俩函数大家可以直接复制一下拿去用,保证有用:

confirm(){
     //用Promise.all进行全部form表单的验证
     Promise.all([
         //非数组部分的表单
         this.validateForm("refForm"),
         //数组部分的表单,用map返回验证函数的调用
         ...this.formData.ruleList.map((item,index)=>this.validateForm(`refForm${index}`))
     ]).then(res=>{
         if(res) {
             // 全部表单验证通过
         }
     })
 },
 validateForm(refs){
 	  //获取到form表单的dom,如果是对象直接拿到,如果是数组,就拿第一个
 	  //elementui对循环的form包装成了数组
     let valiForm = this.$refs?.[refs].validate?this.$refs?.[refs]:this.$refs?.[refs][0]
     return new Promise((resolve,reject)=>{
         //在Promise里进行验证,如果通过就resolve()
         valiForm.validate(res=>{
             if(res) resolve()
             else reject()
         })
     })
 },

有帮助的话,点个赞呗!

上一篇:nodejs如何读取并修改文件内容?
下一篇:js发布-订阅模式(观察者模式)文章来源地址https://www.toymoban.com/news/detail-731868.html

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

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

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

相关文章

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

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

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

    2024年01月23日
    浏览(13)
  • vue +element UI form表单校验数组嵌套,数组对象必填校验

    vue +element UI form表单校验数组嵌套,数组对象必填校验

    使用element表单时会出现数组对象类型的数据结构并且需要必填校验 这时数组对象的检验方法就为paramJsonListRules 注意的是为了实现校验,在需要校验的el-form-item内通过自己的:rules加入对象的校验方法,例如图中想给参数值加校验则直接在相关el-form-item内加入 :rules=\\\"paramJsonLis

    2024年02月11日
    浏览(18)
  • 在vue项目里,Element-Ui中el-form 实现一行两个表单效果

    在vue项目里,Element-Ui中el-form 实现一行两个表单效果

    1.首先使用elementUi中的Layout 24分栏进行布局,将整个form表单放入24分栏里 如图所示: 2.再将需要同行显示的表单放入el-row中的el-col中去 3.然后再根据你的需求控制一下表单大小就ok啦  全部代码: 效果图如下:  

    2024年02月11日
    浏览(14)
  • element-ui的form表单校验

    form表单校验基本三步: 1、定义验证规则 在data中定义表单校验规则,一个表单项可定义多条规则,表单项规则用数组,规则为对象,required为必须填写,message为校验提示信息,trigger为校验时机,可选blur和change,分别为失去焦点和数据变化;min/max为最小与最大字符个数,v

    2024年02月11日
    浏览(17)
  • VUE element-ui之form表单中input输入超过规定长度error提醒,并实时显示输入长度,可无限输入

    VUE element-ui之form表单中input输入超过规定长度error提醒,并实时显示输入长度,可无限输入

    需求:输入超过规定长度error提醒,并实时显示输入长度,可无限输入 步骤: 我的项目中使用校验比较多,所以进行简单的封装: 新建js文件写入下面的函数 需要校验的组件引用使用: data中定义: form表单中prop要和rules中定义校验名一致: 看效果: 可以看到我们自定义n

    2024年02月16日
    浏览(12)
  • Element-UI form表单 resetFields() 重置表单无效问题

    Element-UI form表单 resetFields() 重置表单无效问题

    原因: resetFields() 是将表单项重置为初始值,而这个初始值是在 Vue mounted 时赋值上去的,如果在这之前对表单进行了赋值,则初始值会改变,那么后面调用 resetFields() 则不会生效(不会是定义时的空值) 方法1:将赋值操作定义在 this.$nextTick() 中(保证了初始值不被修改)

    2024年02月11日
    浏览(12)
  • Element-UI可以动态生成的form表单

    Element-UI可以动态生成的form表单

    此form表单每一项绑定的值组成一个对象,对象叠加组成了一个对象数组,循环对象数组生成form的表单项。当点击新增一项时,其实就是给form表单对象数组添加一个对象,删除则反之。值得注意的是,由于动态表单得到的是一个对象数组,但我们需要的是表单的值组成的对象

    2024年02月11日
    浏览(16)
  • element-ui form表单校验 失败的原因

    element-ui form表单校验 失败的原因

    1、没有在el-form上指定model 2、el-form-item上的prop名称不对,应当与rules中的名称一致; 3、绑定的属性没有在data中声明; 4、特别重要的一点是ruleForm(数据)和rules(校验规则)里面对应的key一定要相同,一个是数据绑定的值 另外一个是值的规则。

    2024年02月11日
    浏览(14)
  • element-ui form表单的动态rules校验

    element-ui form表单的动态rules校验

    在vue 项目中,有时候可能会用到element-ui form表单的动态rules校验,比如说选择了哪个选项,然后动态显示或者禁用等等。 我们可以巧妙的运用element-ui form表单里面form-item想的校验规则来处理(每一个form-item项都可以单独校验)。 上代码: 重点是这个: :rules=“sqyxForm.jtpslx

    2024年02月15日
    浏览(12)
  • Element UI 多个Form表单同时验证

    这里讲的主要是Element UI 组件的表单验证,Element UI 的Form表单验证是依靠 ref 来进行的,但是当一个页面有用到多个Form表单的时候,又要同时对这多个表单进行验证,这个时候写在后面的Form表单会覆盖前面的样式,导致只会验证最后一个 解决方案:

    2024年02月11日
    浏览(9)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包