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 相关文章推荐
js 颜色选择器(兼容firefox)
Mar 05 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
Jun 15 Javascript
node.js中的fs.fchmodSync方法使用说明
Dec 16 Javascript
javascript中Number对象的toString()方法分析
Dec 20 Javascript
jQuery基于ajax实现星星评论代码
Aug 07 Javascript
jQuery简单动画变换效果实例分析
Jul 04 Javascript
Google 地图API Map()构造器详解
Aug 06 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
Aug 18 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
Jun 15 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
Feb 23 Javascript
js实现简单的打印表格
Jan 15 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数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
使用console进行性能测试
2015/04/27 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
2015/06/15 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
Python入门之modf()方法的使用
2015/05/15 Python
Scrapy的简单使用教程
2017/10/24 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
基于树莓派的语音对话机器人
2019/06/17 Python
python同步两个文件夹下的内容
2019/08/29 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
群众路线个人自我剖析材料
2014/10/07 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL