vue 点击添加多个input及多个关键字

这是一个关于Vue.js组件的示例,展示了如何创建输入框、添加和移除关键词功能。用户可以通过输入关键词并按回车键添加到列表中,已添加的关键词可以被编辑或删除。示例中涉及到了关键词的验证和重复添加的处理,以及关键词的显示和管理。
摘要由CSDN通过智能技术生成
<template>
<div>
  <div class="input-info">
    <el-button type="primary" size="small" @click="addInput">添 加</el-button>
    <div v-for="(item,i) of eventPlanForm.matchKeywordArray" :key="i" >
      <el-input type="text" v-model="keywordList[i]" placeholder="可添加多个关键词,回车键确认" size="small" clearable
        @keyup.13.native="enterFun(1,i)" style="width:480px;margin-right:10px"></el-input>
      <span class="iconfont el-icon-remove text-red" style="cursor:pointer" @click="removeInput">移除</span>
      <div class="textarea-info">
        <el-tag :key="tag" v-for="tag in eventPlanForm.matchKeywordArray[i]" closable :disable-transitions="true"
          size="small" @close="keywordClose(tag,1,i)">
          {{tag}}
        </el-tag>
      </div>
    </div>
    <div>
      <el-input v-model="ambiguityKeywordArray" placeholder="可添加多个关键词,回车键确认" style="margin-top:15px" size="small" @keyup.13.native="enterFun(2)"></el-input>
        <div class="textarea-info">
          <el-tag :key="tag" v-for="tag in eventPlanForm.ambiguityKeywordArray" closable :disable-transitions="true"
            size="small" @close="keywordClose(tag,2)">
            {{tag}}
          </el-tag>
        </div>
    </div>
  </div>
</div>
</template>

<script>
  export default {
    data() {
      return {
        keywordList:[],
        ambiguityKeywordArray:'',
        eventPlanForm: {
          matchKeywordArray:[],
          ambiguityKeywordArray:[],
        },
      };
    },
methods:{
      // 添加input
      addInput() {
        this.keywordList.push('')
        this.eventPlanForm.matchKeywordArray.push([])
      },
      // 移除input
      removeInput() {
         this.keywordList.pop('')
        this.eventPlanForm.matchKeywordArray.pop([])
      },
      //关键字添加
      enterFun(num,i) {
        if (num == 1) {
          if (this.keywordList[i].replace(/(^\s*)|(\s*$)/g, "") == '') {
            this.keywordList[i] = '';
            return;
          }
          if (this.eventPlanForm.matchKeywordArray[i].indexOf(this.keywordList[i]) == -1) {
            this.eventPlanForm.matchKeywordArray[i].push(this.keywordList[i])
            this.keywordList[i] = ''
            console.log(this.eventPlanForm.matchKeywordArray)
          } else {
            this.$message.warning('该关键字已经添加')
            this.keywordList[i] = ''
          }
        }
        if (num == 2) {
          if (this.ambiguityKeywordArray.replace(/(^\s*)|(\s*$)/g, "") == '') {
            this.ambiguityKeywordArray = '';
            return;
          }
          if (this.eventPlanForm.ambiguityKeywordArray.indexOf(this.ambiguityKeywordArray) == -1) {
            this.eventPlanForm.ambiguityKeywordArray.push(this.ambiguityKeywordArray.replace("\n",''))
            this.ambiguityKeywordArray = ''
            console.log(this.eventPlanForm.ambiguityKeywordArray)
          } else {
            this.$message.warning('该关键字已经添加')
            this.ambiguityKeywordArray = ''
          }
        }
      },
      //关键字删除
      keywordClose(tag, num,i) {
        if (num == 1) {
          this.eventPlanForm.matchKeywordArray[i].splice(this.eventPlanForm.matchKeywordArray[i].indexOf(tag), 1);
          console.log(this.eventPlanForm.matchKeywordArray)
        }
        if (num == 2) {
          this.eventPlanForm.ambiguityKeywordArray.splice(this.eventPlanForm.ambiguityKeywordArray.indexOf(tag), 1);
          console.log(this.eventPlanForm.ambiguityKeywordArray)
        }
      },
	}
  };
</script>

<style scoped>
.input-info{
  width: 600px;
  margin: 50px auto;
  background: #fff;
  padding:30px;
  line-height: 40px;
}
.el-tag{margin-right:5px;}
</style>

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值