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代码
May 27 Javascript
document.getElementById介绍
Sep 13 Javascript
根据选择不同的下拉值出现相对应的文本输入框
Aug 01 Javascript
JavaScript极简入门教程(二):对象和函数
Oct 25 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
Jun 12 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
Oct 09 Javascript
JS路由跳转的简单实现代码
Sep 21 Javascript
vue 插值 v-once,v-text, v-html详解
Jan 19 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
mpvue小程序循环动画开启暂停的实现方法
May 15 Javascript
使用vue实现一个电子签名组件的示例代码
Jan 06 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 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生成随机密码的三种方法小结
2010/09/04 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中List.index()方法的使用教程
2015/05/20 Python
Python中的字典与成员运算符初步探究
2015/10/13 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
python中time、datetime模块的使用
2020/12/14 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
纽约海:Sea New York
2018/11/04 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
军训自我鉴定200字
2014/02/13 职场文书
法人任命书范本
2014/06/04 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
库房管理员岗位职责
2015/02/12 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
元宵节晚会主持词
2015/07/01 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
浅析Python中的随机采样和概率分布
2021/12/06 Python