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 相关文章推荐
jQuery ReferenceError: $ is not defined 错误的处理办法
May 10 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
jQuery获取单击节点对象的方法
Jun 02 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
js仿微博动态栏功能
Feb 22 Javascript
js+canvas实现动态吃豆人效果
Mar 22 Javascript
使用DataTable插件实现异步加载数据
Nov 19 Javascript
webpack中的热刷新与热加载的区别
Apr 09 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
Sep 21 Javascript
微信小程序http连接访问解决方案的示例
Nov 05 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
Jul 19 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学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
php写的简易聊天室代码
2011/06/04 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
JavaScript中splice与slice的区别
2017/05/09 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
js实现简单模态框实例
2018/11/16 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
python写的一个squid访问日志分析的小程序
2014/09/17 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
python自动化发送邮件实例讲解
2021/01/04 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
法律顾问服务方案
2014/05/15 职场文书
离婚财产分配协议书
2014/10/21 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
员工自我评价范文
2015/03/11 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
简单聊聊Golang中defer预计算参数
2022/03/25 Golang