需求:手机号的input框默认一个,点击加号,可以增加和减少。
<template>
<el-form :model="editUserForm" label-width="80px" hide-required-asterisk ref="editUserFormRef">
<!-- 手机 -->
<el-form-item label="手机号:" :prop="'mobiles.0.value'" >
<el-input
v-model="editUserForm.mobiles[0].value"
placeholder="请输入手机号"
clearable
></el-input>
<el-button @click.prevent="addMobile">+</el-button>
</el-form-item>
<el-form-item
v-for="(mobile, index) in editUserForm.mobiles.slice(1)"
:key="mobile.key"
:prop="'mobiles.' + (index + 1) + '.value'"
>
<el-input
v-model="mobile.value"
placeholder="请输入手机号"
clearable
></el-input>
<el-button class="remove-button" @click.prevent="removeMobile(mobile)">-</el-button>
</el-form-item>
</el-form>
</template>
<script setup lang='ts'>
import { onMounted,reactive } from 'vue';
//表单的数据
const editUserForm = reactive({
mobiles: [
{
value: '1782731823',
key:1
},
{
value: '777777777',
key:3
},
]
})
//删除input
const removeMobile = (item): void => {
const index = editUserForm.mobiles.indexOf(item)
if (index !== -1) {
editUserForm.mobiles.splice(index, 1)
}
}
//增加input
const addMobile = (): void => {
if (editUserForm.mobiles.length < 10) {
editUserForm.mobiles.push({
value: '',
key: Date.now(),
})
} else {
console.log('手机号增加数量已上限!')
}
}
</script>
<style lang='scss' scoped></style>
通过 对数据的增减而增加和减少input框,而不是操作dom
效果图如下: