element实现form表单动态添加email效果

前言:

        vue中使用element实现form表单动态添加email效果

效果:

 

实现步骤:

实现源代码:

<template>
  <div>
    <el-form ref="dynamicValidateForm" :model="dynamicValidateForm" label-width="100px" class="demo-dynamic">
      <el-form-item
        v-for="(domain, index) in dynamicValidateForm.domains"
        :key="domain.key"
        :label="'域名' + index"
        :prop="'domains.' + index + '.value'"
        :rules="[
          { required: true, message: '请输入邮箱地址', trigger: 'blur' },
          { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
        ]"
      >
        <el-input v-model="domain.value" style="width:200px;margin-right:10px;"></el-input>
        <el-button @click.prevent="removeDomain(domain)">删除</el-button>

      </el-form-item>



      <el-form-item>
        <el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
        <el-button @click="addDomain">新增域名</el-button>
        <el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  components: {},
  props: [],
  data() {
    return {
      dynamicValidateForm: {
        domains: [{
          value: ''
        }],
        email: ''
      }
    }
  },
  watch: {},
  created() {
  },
  mounted() {
  },
  beforeDestroy() {
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert('submit!')
        } else {
          console.log('error submit!!')
          return false
        }
      })
    },
    resetForm(formName) {
      this.$refs[formName].resetFields()
    },
    removeDomain(item) {
      var index = this.dynamicValidateForm.domains.indexOf(item)
      if (index !== -1) {
        this.dynamicValidateForm.domains.splice(index, 1)
      }
    },
   addDomain() {
		//新增加校验方法1,页面上的input框不能有空值,这里是因为我的form表单只有email,如果不光是email的话就不建议这样来判断了
		this.$refs['dynamicValidateForm'].validate((valid) => {
			if (valid) {
				  this.dynamicValidateForm.domains.push({
					value: '',
					key: Date.now()
				  })
			 }
		})	  
		
		//新增加校验方法2,页面有任何一个空的都不行
		let isPass = true //是否可以执行方法
		this.dynamicValidateForm.domains.forEach(item => {
			if(item.value === ''){
				isPass = false
			}
			
		})
		if(isPass){
			this.dynamicValidateForm.domains.push({
					value: '',
					key: Date.now()
				  })
		}
		
			  
    }
  }

}
</script>

<style lang='scss' scoped>

</style>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值