123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <template>
- <el-form
- ref="formRef"
- :model="dynamicValidateForm"
- label-width="120px"
- class="demo-dynamic"
- >
- <el-form-item
- prop="email"
- label="Email"
- :rules="[
- {
- required: true,
- message: 'Please input email address',
- trigger: 'blur',
- },
- {
- type: 'email',
- message: 'Please input correct email address',
- trigger: ['blur', 'change'],
- },
- ]"
- >
- <el-input v-model="dynamicValidateForm.email" />
- </el-form-item>
- <el-form-item
- v-for="(domain, index) in dynamicValidateForm.domains"
- :key="domain.key"
- :label="'Domain' + index"
- :prop="'domains.' + index + '.value'"
- :rules="{
- required: true,
- message: 'domain can not be null',
- trigger: 'blur',
- }"
- >
- <el-input v-model="domain.value" />
- <el-button style="margin-top: 8px" @click.prevent="removeDomain(domain)"
- >Delete</el-button
- >
- </el-form-item>
- <el-form-item>
- <el-button type="primary" @click="submitForm(formRef)">Submit</el-button>
- <el-button @click="addDomain">New domain</el-button>
- <el-button @click="resetForm(formRef)">Reset</el-button>
- </el-form-item>
- </el-form>
- </template>
- <script lang="ts" setup>
- import { reactive, ref } from 'vue'
- import type { FormInstance } from 'element-plus'
- const formRef = ref<FormInstance>()
- const dynamicValidateForm = reactive<{
- domains: DomainItem[]
- email: string
- }>({
- domains: [
- {
- key: 1,
- value: '',
- },
- ],
- email: '',
- })
- interface DomainItem {
- key: number
- value: string
- }
- const removeDomain = (item: DomainItem) => {
- const index = dynamicValidateForm.domains.indexOf(item)
- if (index !== -1) {
- dynamicValidateForm.domains.splice(index, 1)
- }
- }
- const addDomain = () => {
- dynamicValidateForm.domains.push({
- key: Date.now(),
- value: '',
- })
- }
- const submitForm = (formEl: FormInstance | undefined) => {
- if (!formEl) return
- formEl.validate((valid) => {
- if (valid) {
- console.log('submit!')
- } else {
- console.log('error submit!')
- return false
- }
- })
- }
- const resetForm = (formEl: FormInstance | undefined) => {
- if (!formEl) return
- formEl.resetFields()
- }
- </script>
|