vue+elementui表单数组对象深层嵌套之自定义验证规则

这篇具有很好参考价值的文章主要介绍了vue+elementui表单数组对象深层嵌套之自定义验证规则。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求场景:在Vue+Elementui项目中,需要在表单的循环数组中,对某一深层嵌套的对象属性制定自定义校验规则。文章来源地址https://www.toymoban.com/news/detail-745676.html

<template>
    <div>
        <el-form :model="form" ref="form" label-width="110px">
            <div v-for="(item,index) in form.list" :key="index">
                <el-col :xs="24"
                      :sm="24"
                      :md="12"
                      :lg="4">
                    <el-form-item label="默认值" :prop="`list.${index}.state`"           :rules="{ required:true, validator: validateState, trigger: 'blur', index:index }">
                      <el-input v-model.number="item.state"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :xs="24"
                        :sm="24"
                        :md="11"
                        :lg="5">
                    <el-form-item label="是否可调">
                      <el-switch active-text="是" inactive-text="否" v-            model="item.adjust.isAdjust">
                      </el-switch>
                    </el-form-item>
                </el-col>
                <el-col :xs="24"
                      :sm="24"
                      :md="12"
                      :lg="8"
                      v-show="item.adjust.isAdjust">
                    <el-form-item label="范围调节" required>
                      <el-col :span="11">
                        <el-form-item :prop="`list.${index}.adjust.min`" :rules="{ required:true, validator: validateMin, trigger: 'blur', index:index }">
                          <el-input v-model.number="item.adjust.min"
                                placeholder="最小值">
                          </el-input>
                        </el-form-item>
                      </el-col>
                      <el-col :span="1">
                       <div style="text-align:center;">至</div>                                        
                      </el-col>
                      <el-col :span="11">
                        <el-form-item :prop="`list.${index}.adjust.max`" :rules="{ required:true, validator: validateMax, trigger: 'blur', index:index }">
                          <el-input v-model.number="item.adjust.max"
                                placeholder="最大值">
                          </el-input>
                        </el-form-item>
                      </el-col>
                    </el-form-item>
                </el-col>
            </div>
        </el-form>
    </div>
</template>
<script>
export default{
    data(){
        return{
            // 此处略过。。。挪用上文
        }
    },
    methods:{
        isEmpty(arg) { 
            if(typeof arg === 'undefined' || arg === null || arg === ''){
                return true
            }
            return false
        },
        validateState(rule,value,callback){
            let min = this.form.list[rule.index].adjust.min
            let max = this.form.list[rule.index].adjust.max
            if(this.isEmpty(value)) {
                return callback(new Error('参数不得为空')))
            }
            if(!this.isEmpty(min) && !this.isEmpty(max) && parseInt(value) <     
parseInt(min)) {
                return callback(new Error('不得小于最小值')))
            }
            if(!this.isEmpty(min) && !this.isEmpty(max) && parseInt(value) > parseInt(max)) {
                return callback(new Error('不得大于最大值'))
            }
            return callback()
        },
    }
}
</script>

到了这里,关于vue+elementui表单数组对象深层嵌套之自定义验证规则的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue中form表单校验rules的问题(对象数组过滤新对象数组 ,对象校验,数组校验,)

    const data = reactive({ form: { js //往数组中添加这八个相机配置参数 for(var i=0;i8;i++){ const clonedLightObject1 = { …data.form.lightObject1 }; clonedLightObject1.productNameId=pid clonedLightObject1.cameraType=i clonedLightObject1.shootingNumber=1 页面

    2024年02月08日
    浏览(39)
  • elementui 表单数据嵌套过深导致校验不了问题解决

    在使用 elementui 表单校验的过程中发现表单中存在嵌套多个层级的数据不能进行校验。 elementui 中如果需要进行表单校验,表单项的 prop 和 v-model 绑定的属性值命名必须要是相同的。而对于多层级的嵌套属性我们应该怎么表示呢? 只需要将表单对象后的字符串作为 prop 的值即

    2024年01月24日
    浏览(38)
  • ElementUI 树形表格的使用以及表单嵌套树形表格的校验问题等汇总

    目录 一、树形表格如何添加序号体现层级关系  二、树形表格展开收缩图标位置放置,设置指定列 三、表单嵌套树形表格的校验问题以及如何给校验rules传参 普通表格绑定如下:这种方法只能校验表格的第一层,树形需要递归设置子级节点prop。 树形表格绑定如下:使用下面

    2024年02月11日
    浏览(35)
  • 微信小程序之自定义表单组件(radio)

    背景: 最近在做项目的时候遇到一个问题,那就是微信的官方表单组件的可扩展性不强,无法达到设计稿所要求的效果,所以想到了用自定义组件的方法自定义一个表单组件。 (自定义组件其实往往用在需要复用的地方,比如每个页面都有一样的头部和底部,那么我们就可

    2024年02月09日
    浏览(33)
  • Element 表单验证项v-model绑定值为对象下嵌套的子对象的属性时无法验证

    问题 :input绑定的值是对象 obj 下面的子对象 obj.id 时,绑定的rules校验不生效。会出现已经输入值但还会提示id必填的情况。正常情况下绑定校验没有问题 解决方案1 :在规则定义与绑定时, prop 绑定的规则结构 与 rules  下的数据结构 \\\'obj.id\\\' 一致 解决方案2 :表单绑定的数据

    2024年02月16日
    浏览(34)
  • Vue3 element-plus表单嵌套表格实现动态表单验证

    部分效果图如下: 另表格有添加和删除按钮,点击提交进行表单验证。 首先data格式必须是对象包裹数组 给表单绑定form数据 表格绑定tableData数据 给表单项增加验证规则 rules对应data rules对象,prop对应表单字段(注意是表格里每一行对应的字段 forms.tableData[下标].key) prop的关

    2024年02月14日
    浏览(32)
  • vue中elementUI表单循环验证

    进行验证的步骤

    2024年02月15日
    浏览(28)
  • Vue宝典之自定义组件声明与使用

    Vue.js 是一款现代化的JavaScript框架,它的核心思想是组件化开发。通过使用Vue的自定义组件功能,我们可以将页面拆分为多个组件,每个组件负责自己的一部分功能。这样做的好处是,我们可以更好地管理和维护代码,使得项目结构更加清晰和可扩展。 自定义组件是Vue中用来

    2024年02月05日
    浏览(37)
  • 表单验证 ---- 在Vue2中使用ElementUI进行表单验证

    目录 前言 给表单绑定对应属性 在data中定义数据对象和表单的定义规则 与数据对象双向绑定 对整个表单进行验证 在做项目时,对于表单进行验证是我们必不可少的 例如 搭建一个基本的登录界面 表单嵌套一般都是   el-form el-form-item el-input  进行验证前,我们需要先 对el-

    2024年01月20日
    浏览(29)
  • 【VUE】ArcoDesign之自定义主题样式和命名空间

    Arco Design是什么? Arco Design 是由字节跳动推出的企业级产品的完整设计和开发解决方案前端组件库 官网地址:https://arco.design/ 同时也提供了一套开箱即用的中后台前端解决方案: Arco Design Pro (https://pro.arco.design/) Arco Design 样式基于 less 技术栈,但也同 ElementPlus 默认主题,CS

    2024年02月08日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包