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+xml技术实现分页浏览
Jul 27 Javascript
js parsefloat parseint 转换函数
Jan 21 Javascript
jquery 简单的进度条实现代码
Mar 11 Javascript
javascript 二进制运算技巧解析
Nov 27 Javascript
javascript表单验证和Window详解
Dec 11 Javascript
基于jQuery实现中英文切换导航条效果
Sep 18 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
Mar 02 Javascript
利用js给datalist或select动态添加option选项的方法
Jan 25 Javascript
ES6基础之解构赋值(destructuring assignment)
Feb 21 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
微信小程序的注册页面包含倒计时验证码、获取用户信息
May 22 Javascript
elementUI select组件使用及注意事项详解
May 29 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 spl_autoload_register实现自动加载研究
2011/12/06 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
使用JavaScript switch case 另类写法
2010/03/14 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
Python中pygame安装方法图文详解
2015/11/11 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
2014的自我评价
2014/01/13 职场文书
信息管理应届生求职信
2014/03/07 职场文书
支部鉴定材料
2014/06/02 职场文书
积极向上的团队口号
2014/06/06 职场文书
中学生检讨书1000字
2014/10/28 职场文书
先进基层党组织材料
2014/12/25 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
Nginx的gzip相关介绍
2022/05/11 Servers