ElementUI Tag组件实现多标签生成的方法示例


Posted in Javascript onJuly 08, 2019

现在好多应用场景里会有一些需要给文章打标签等类似的操作,之前jquery用户是使用taginput来实现,使用VUE以后elementui有一个组件非常简单就是tag组件。

ElementUI Tag组件实现多标签生成的方法示例

<el-tag
 :key="tag"
 v-for="tag in dynamicTags"
 closable
 :disable-transitions="false"
 @close="handleClose(tag)">
 {{tag}}
</el-tag>
<el-input
 class="input-new-tag"
 v-if="inputVisible"
 v-model="inputValue"
 ref="saveTagInput"
 size="small"
 @keyup.enter.native="handleInputConfirm"
 @blur="handleInputConfirm"
>
</el-input>
<el-button v-else class="button-new-tag" size="small" @click="showInput">+ New Tag</el-button>

<style>
 .el-tag + .el-tag {
  margin-left: 10px;
 }
 .button-new-tag {
  margin-left: 10px;
  height: 32px;
  line-height: 30px;
  padding-top: 0;
  padding-bottom: 0;
 }
 .input-new-tag {
  width: 90px;
  margin-left: 10px;
  vertical-align: bottom;
 }
</style>

<script>
 export default {
  data() {
   return {
    dynamicTags: ['标签一', '标签二', '标签三'],
    inputVisible: false,
    inputValue: ''
   };
  },
  methods: {
   handleClose(tag) {
    this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
   },

   showInput() {
    this.inputVisible = true;
    this.$nextTick(_ => {
     this.$refs.saveTagInput.$refs.input.focus();
    });
   },

   handleInputConfirm() {
    let inputValue = this.inputValue;
    if (inputValue) {
     this.dynamicTags.push(inputValue);
    }
    this.inputVisible = false;
    this.inputValue = '';
   }
  }
 }
</script>

这个是官方文档给的实例,这样可以解决单一标签输入。但是实际场景中,好多用户是通过ctrl+c,ctrl+v的方式输入的,有可能还会一起粘贴好多行的标签,更有可能从excel中复制出来。

那我一一解决一下这样一个场景

首先,先改一下样式,让文本框变长:

.el-tag{
 margin-right: 10px;
}
.el-tag + .el-tag {
  margin-right: 10px;
 }
 .button-new-tag {
  height: 32px;
  line-height: 30px;
  padding-top: 0;
  padding-bottom: 0;
 }
 .input-new-tag {
  vertical-align: bottom;
 }

接着,修改一下enter和blur事件:

handleInputConfirm() {
 let inputValue = this.inputValue;
  if (inputValue) {
   var values = inputValue.split(/[,, \n]/).filter(item=>{
    return item!='' && item!=undefined
   })
   values.forEach(element => {
    var index = this.dynamicTags.findIndex(i=>{
    return i==element
   })
   if(index<0){
    this.dynamicTags.push(element);
   }
  });   
 }
 this.inputVisible = false;
 this.inputValue = '';
}

效果:

阿大发
asd

三大发舒服,

阿斯顿发撒地方。
阿斯顿发,阿斯顿发,,阿斯顿发,,阿斯顿发安抚,阿斯顿发 是淡淡的  点点滴滴方法,阿斯顿发撒地方,adfasd

我们把以上文字复制粘贴进去

ElementUI Tag组件实现多标签生成的方法示例 

ElementUI Tag组件实现多标签生成的方法示例

所有去重,拆分都OK,那们在试一下,从excel中复制

ElementUI Tag组件实现多标签生成的方法示例

 ElementUI Tag组件实现多标签生成的方法示例

完成。希望能够帮到有需要的朋友。也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 变量作用域 两个可能会被忽略的小特性
Mar 23 Javascript
aspx中利用js实现确认删除代码
Jul 22 Javascript
jquery ajax同步异步的执行最终解决方案
Apr 26 Javascript
9行javascript代码获取QQ群成员具体实现
Oct 16 Javascript
document.forms用法示例介绍
Jun 26 Javascript
JavaScript代码复用模式详解
Nov 07 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 Javascript
BootStrap无限级分类(无限极分类封装版)
Aug 26 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
Oct 24 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
微信小程序开发之tabbar图标和颜色的实现
Oct 17 Javascript
node koa2 ssr项目搭建的方法步骤
Dec 11 Javascript
利用不到200行代码写一款属于你自己的js类库
Jul 08 #Javascript
Vue中util的工具函数实例详解
Jul 08 #Javascript
详解基于 Node.js 的轻量级云函数功能实现
Jul 08 #Javascript
使用 node.js 模仿 Apache 小部分功能
Jul 07 #Javascript
echarts统计x轴区间的数值实例代码详解
Jul 07 #Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
Jul 07 #Javascript
详解django模板与vue.js冲突问题
Jul 07 #Javascript
You might like
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Python super()方法原理详解
2020/03/31 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
.NET程序员的数据库面试题
2012/10/10 面试题
更夫岗位责任制
2014/02/11 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
安全生产专项整治方案
2014/05/06 职场文书
企业承诺书怎么写
2014/05/24 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
微信搭讪开场白
2015/05/28 职场文书
python随机打印成绩排名表
2021/06/23 Python
python实现会员信息管理系统(List)
2022/03/18 Python