element动态添加多条input框来添加数据

elementUI进行写的

在这里插入图片描述
在这里插入图片描述

<el-dialog title="添加"
                           :visible.sync="addlistVisible"
                           width="920px"
                           :before-close="handleClose2">
                    <div>
                        <el-form :model="form">
                        //这条数据框 使用的是el-select 模糊搜索  上篇文章有介绍,刚点开弹框默认显示的一条
                            <div>
                                <el-form-item :label-width="formLabelWidth">
                                    <el-select v-model="form.addschool"
                                               filterable
                                               remote
                                               style="width:230px;"
                                               reserve-keyword
                                               placeholder="请输入关键词"
                                               :remote-method="remoteMethod2"
                                               :loading="loading"
                                               @focus="repeatList"
                                               clearable="true"
                                               @change="handleSelectBranchCom2">
                                        <el-option v-for="item in addschoolname"
                                                   :key="item.value"
                                                   :label="item.label"
                                                   :value="item">
                                        </el-option>
                                    </el-select>
                                    <el-input style="width:180px" v-model="form.addzy" placeholder="请输入专业" autocomplete="off"></el-input>
                                    <el-input style="width:150px" v-model="form.addnumber" placeholder="请输入安置人数" autocomplete="off"></el-input>
                                    <el-date-picker v-model="form.addazdate"
                                                    type="month"
                                                    placeholder="选择安置日期"
                                                    format="yyyy 年 MM 月"
                                                    value-format="yyyy-MM-dd">
                                    </el-date-picker>
                                </el-form-item>
                            </div>
						// 这里 是动态循环添加的input框,可自行更改
                            <div v-for="(ddd,index) in counter">
                                <el-form-item :label-width="formLabelWidth">
                                    <el-input style="width:230px" v-model="addequallyname" :disabled="true" placeholder="请输入学校" autocomplete="off"></el-input>
                                    <!--这里v-model绑定要 ddd.zyname   才能确保动态添加的所绑定的数值不一样-->
                                    
                                    <el-input style="width:180px" v-model="ddd.zyName" placeholder="请输入专业" autocomplete="off"></el-input>
                                    <el-input style="width:150px" v-model="ddd.azCount" placeholder="请输入安置人数" autocomplete="off"></el-input>
                                    <el-date-picker v-model="ddd.azDate"
                                                    type="month"
                                                    placeholder="选择安置日期"
                                                    format="yyyy 年 MM 月"
                                                    value-format="yyyy-MM-dd">
                                    </el-date-picker>
                                </el-form-item>
                            </div>
                            <div class="ujm">
                                <el-button class="addstyle" type="info" @click="addinput">新增信息</el-button>
                            </div>

                        </el-form>
                    </div>
                    <span slot="footer" class="dialog-footer">
                        <!--<el-button @click="addkkk">看一下数据</el-button>-->
                        <el-button @click="addlistVisible = false">取 消</el-button>
                        <el-button type="primary" @click="determineadd">确 定</el-button>
                    </span>
                </el-dialog>

 data: function () {
                return {
                	//添加要循环的为空
						counter:[],
					}

写方法
methods:{

		//现在是动态创建input里所需要的值,既然是添加多条 就是要push添加对象
		 addinput() {
                    this.counter.push({ 'zyName': '', 'azCount': '', 'azDate': '' })
                },
		
		//这里要进行提交 往接口提交
		determineadd() {
                    var that = this;
                    //这里打印的都是 默认第一条里所添加的数据
                    console.log(that.searchid2)
                    console.log(that.form.addzy)
                    console.log(that.form.addazdate)
                    console.log(that.form.addnumber)

                    //这个要看你们后端需要添加的数据的格式   我们后台是要一个id值   然后多条对象
				我们后端要这种格式
				{
                    "uid":228490,
                    "data":[
                
                       {
                           "zyName":"Web开发",
                           "azCount":50,
                          "azDate":"2020-12"
                       },
                       {
                           "zyName":".Net开发",
                           "azCount":50,
                            "azDate":"2020-12"
                        }
                   ]
                }

上面这段要删除掉

                    var ui = {
                        uid: this.searchid2,
                        data: [
                            {
                                zyName: that.form.addzy,
                                azCount: that.form.addnumber,
                                azDate: that.form.addazdate,
                            }]
                    }
                    
                    //这里要进行一个数组合并   把默认显示的input的数据 与动态添加的 进行合并
                    console.log( ui.data.push.apply(ui.data, that.counter) )
                    axios.get('   数据接口 ', {
                        params: {
                        //  参数 传送给后端
                            paras: ui
                        }
                    })
                        .then(function (res) {
                            that.$message({
                                message: res.data.msg,
                                type: 'success'
                            });
                            console.log(res);
                            //这里是进行   添加成功后  要把刚才输入的数值清空
                            that.form.addschool = '';
                            that.addequallyname = '';
                            that.searchid2 = '';
                            that.form.addzy = '';
                            that.form.addazdate = '';
                            that.form.addnumber = '';
                            //  也要把动态添加的input给清空
                            that.counter = [];
                            that.addlistVisible = false;
                            //然后在调取一下数据列表
                            that.getlist();



                        })
                        .catch(function (err) {
                            console.log(err)
                        });


                },


}

感觉写的算是详细的了,请自行修改

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UI 提供了强大的表单组件和灵活的功能,包括动态添加输入字段的表单验证。当你需要在运行时根据用户交互或数据变化动态生成表单元素并进行校验时,可以使用 Vue.js 的响应式系统配合 Element UI 的 `el-form` 和 `el-form-item` 组件以及自定义验证规则。 以下是一个基本的步骤: 1. **Vue组件结构**: 使用 `v-for` 指令遍历动态数据,并为每个动态生成的 input 创建一个 `el-form-item`。 ```html <template> <el-form :model="form" :inline="true"> <el-row v-for="(item, index) in dynamicItems"> <el-col :span="6"> <el-form-item :key="index" :label="item.label"> <el-input v-model="item.value"></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-button @click="addFormItem">Add Item</el-button> <el-button @click="submitForm">Submit</el-button> </el-col> </el-row> </el-form> </template> ``` 2. **数据绑定和方法**: 定义 `dynamicItems` 数组动态生成的表单项,`form` 对象用于储整个表单的数据。`addFormItem` 和 `submitForm` 方法处理相应的事件。 ```js <script> export default { data() { return { form: {}, dynamicItems: [{ label: 'Dynamic Input', value: '' }], }; }, methods: { addFormItem() { this.dynamicItems.push({ label: 'New Input', value: '' }); }, submitForm() { // 这里可以使用 validate 方法进行表单验证,确保所有输入都有效 this.$refs.form.validate((valid) => { if (valid) { // 提交表单逻辑 } else { console.log('请确保所有字段已填写'); } }); }, }, }; </script> ``` 3. **表单验证**: Element UI 的 `el-form` 元素有一个 `ref` 属性,`validate` 方法会检查所有关联的表单项是否通过验证。你可以在 `submitForm` 中调用这个方法,然后根据返回的结果决定是否提交表单。 注意,对于动态添加的表单项,你需要确保每个 `el-input` 都有对应的 `v-model`,并且根据实际需求定制验证规则。例如,你可能希望对每个输入项设置特定的校验规则,如必填、长度限制等。可以使用 Element UI 的内置验证规则,也可以自定义 `validateHandler` 属性提供自定义验证函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值