elementui 按钮 表单_Vue ElementUi动态表单(多个表单) 的校验及提交

本文介绍如何在Vue中使用ElementUI实现动态表单的校验和提交。通过用户小明和小红的例子,展示了如何根据用户权限控制表单的显示,并进行表单验证。当所有有权限的表单验证通过后,会触发提交操作。
摘要由CSDN通过智能技术生成

用户:小明

用户:小红

{{item.formName}}

提交

export default {

mounted(){

this.userChange('xm')//模拟登录的是小明

},

data () {

return {

makeData:[{

formRef:'formFirst',//表单ref

formModel:{user:'',region:''},//表单model

formShow:'',//表单是否显示的控制

formName:'表单A'//表单标题

},{

formRef:'formSecond',

formModel:{user:'',region:''},

formShow:'',

formName:'表单B'

},{

formRef:'formThird',

formModel:{user:'',region:''},

formShow:'',

formName:'表单C'

}],

xm:[true,true,true],//用户小明的权限

xh:[true,true,false],//用户小红的权限

tabPosition:'xm'//选择用户

}

},

methods:{

enterForm(){//动态表单提交

console.log(this.$refs.formFirst)

let arrForm=[]//哪些表单需要做校验

let arrModel=[]//表单的值

let newArr = [] //承接promise的返回结果

let _self=this

this.makeData.forEach((item,index)=>{//将有权限的表单做校验等等

if (item.formShow) {

checkForm(item.formRef)//校验

arrModel.push(item.formModel)//需要校验的表单的值

}

})

function checkForm(arrName) { //根据form表单的ref,动态生成promise,再对其坐表单校验,都通过了再去做处理

var result = new Promise(function(resolve, reject) {

_self.$refs[arrName][0].validate((valid) => {

if (valid) {

resolve();

} else { reject() }

})

})

newArr.push(result) //push 得到promise的结果

}

Promise.all(newArr).then(function() { //都通过了

console.log(arrModel)

alert('恭喜,表单全部验证通过')

}).catch(function() {

console.log("err");

});

},

userChange(val){//当前登录用户的change

this.makeData.map((item,index)=>{//根据用户的权限决定显示哪些表单

var c=item.formRef

if (this.$refs[c]&&this.$refs[c][0]) { this.$refs[c][0].resetFields()}//模拟切换用户时,将表单置空

return item.formShow=this[val][index]

})

}

}

}

.box-card{

margin-bottom:30px;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值