el-form 多层级表单的实现示例
编程学习 2021-07-04 14:06www.dzhlxh.cn编程入门
这篇文章主要介绍了el-form 多层级表单的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们狼蚁网站SEO优化随着长沙网络推广来一起学习学习吧
前言
本篇文章基于 vue、element-ui
需求
前端开发过程中,经常遇到表单开发的需求,element-ui 为我们带来了极大的便利,前端只需要更专注于前端逻辑。
我们往往会遇到相对复杂的表单,比如狼蚁网站SEO优化的表单:
我们设计的时候可以把它设计成 3 级表单,即划分表单到每一个校验项(输入框,下拉框的等)
最终实现效果如下图所示:
实现
el-form 使用,详情可参见:
有几个比较重要的属性:
- ref 相当于标签的 id
- model 表单数据对象
- rules 表单验证规则
- prop 表单域 model 字段
- label 标签文本
在提交按钮的时候,执行validate方法即可;实时校验可在rules中设置校验项 trigger: 'change'即可
1.el-form 设计
划分表单到每一个校验项(输入框,下拉框的等),可以设计成 3 级表单
奖励设置 这一个校验项稍微复杂一点,可以动态绑定 model 和 rules 实现子项的表单校验
<!-- 一级表单 -->
<el-form class="form" ref="form" :model="form" :rules="form_rules" size="small">
<el-form-item label="红包活动标题" prop="name">
<el-input v-model='form.name' placeholder="请输入红包活动标题(活动展示)" />
</el-form-item>
<el-form-item :label="`奖励设置(${form.seconde_form.length}/${max_reward_module_num})`" prop="seconde_form">
<el-card class="reward_module" v-for="(second_form, second_form_index) in form.seconde_form" :key="`${second_form_index}_second_form`">
<!-- 二级表单 -->
<el-form class="second_form" :ref="`second_form_${second_form_index}`" :model="second_form" :disabled="is_form_item_disabled" inline size="small">
<el-form-item prop="packet_name" :key="`${second_form_index}_packet_name`" :rules="[{ required: true, message: '请输入奖励名称', trigger: 'change' }]" style="width:150px;margin-right:20px;">
<el-input v-model="second_form.packet_name" />
</el-form-item>
</el-form>
</el-card>
</el-form-item>
</el-form>
2.el-form-item 子项校验
校验比较简单,只需要获取到每一个表单对象,并执行validate即可,二级表单就遍历拿到二级表单独享执行同样的操作
定义 form 数据模型:
form: {
name: '',
seconde_form: [
{
packet_name: '',
},
],
},
封装一个 check_form 方法
/**
* 表单校验方法
* @param {String} form_name
*/
function $check_form(form_name) {
const form_component = this.$refs[form_name][0] ? this.$refs[form_name][0] : this.$refs[form_name];
return new Promise((resolve, reject) => {
form_component.validate(valid => {
if (valid) {
resolve();
} else {
reject();
}
});
});
}
点击按钮的时候执行 checkParam 方法
async checkParam(form_name) {
try {
await this.$check_form(form_name);
for (let i = 0; i < this.form.seconde_form.length; i++) {
await this.$check_form(`second_form_${i}`);
}
// next step do something
} catch (e) {
console.log(e);
}
},
到此这篇关于el-form 多层级表单的实现示例的文章就介绍到这了,更多相关el-form 多层级表单内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
上一篇:JavaScript常用工具函数库汇总
下一篇:详解React的回调渲染模式
编程语言
- Win10 PC创意者更新慢速版15048改进内容与已知问题
- 用纯CSS3实现网页中常见的小箭头
- 神舟笔记本问题集锦
- Bellnames常用操作说明
- 揭秘手机淘宝搜索排序的影响因素
- XHTML入门学习教程-网页Head和DTD
- 笔记本光驱保养常用知识
- hzhost虚拟主机系统致命漏洞
- 电脑无线网络出现红色叉叉无线网卡打不开的六
- 16项评比不得不看 机箱哪些功能最实用
- AI怎么绘制一个呲牙的qq表情-
- 红帽指点杆机械键盘 TEX Yoda上手体验测评
- 笔记本电脑保养常识有哪些-笔记本保养常识总结
- cdr怎么设计圆角矩形效果的图标-
- 在XSLT样式表中声明命名空间小结
- Fireworks教程-常用操作技巧总结