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类型系统——undefined和null全面了解
Jul 13 Javascript
js实现二级导航功能
Mar 03 Javascript
jQuery中map函数的两种方式
Apr 07 jQuery
详解升级react-router 4 踩坑指南
Aug 14 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
VUE 实现复制内容到剪贴板的两种方法
Apr 24 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
JS数据类型STRING使用实例解析
Dec 18 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
Dec 29 Javascript
JS中==、===你分清楚了吗
Mar 04 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
Jun 11 Javascript
vue 实现把路由单独分离出来
Aug 13 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生成HTML静态页面实例代码
2008/08/31 PHP
php 将excel导入mysql
2009/11/09 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
详解Bootstrap插件
2016/04/25 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
Python绘制七段数码管实例代码
2017/12/20 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
深入浅析Python的类
2018/06/22 Python
python实现多层感知器
2019/01/18 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
期末考试动员演讲稿
2014/01/10 职场文书
简历自我评价模版
2014/01/31 职场文书
青春寄语大全
2014/04/09 职场文书
教师个人考察材料
2014/12/16 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python