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中对对层的控制
Dec 29 Javascript
js原型继承的两种方法对比介绍
Mar 30 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
基于JQuery制作可编辑的表格特效
Dec 23 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
Jun 24 Javascript
php利用curl获取远程图片实现方法
Oct 26 Javascript
跟我学习javascript的var预解析与函数声明提升
Nov 16 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
Dec 19 Javascript
vue如何在自定义组件中使用v-model
May 14 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
Sep 05 Javascript
setTimeout与setInterval的区别浅析
Mar 23 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
如何使用Strace调试工具
2013/06/03 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
python实现对变位词的判断方法
2020/04/05 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
类如何去实现接口
2013/12/19 面试题
高中军训第一天感言
2014/03/06 职场文书
公司外出活动方案
2014/08/14 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
2014财务年度工作总结
2014/11/11 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
廉洁自律证明
2015/06/24 职场文书
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers