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禁止页面刷新禁止用F5键刷新禁止右键的示例代码
Sep 23 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
jQuery基础知识小结
Dec 22 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
Aug 01 Javascript
Bootstrap图片轮播组件使用实例解析
Jun 30 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
Aug 10 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
Dec 27 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
深入理解Vue-cli搭建项目后的目录结构探秘
Jul 13 Javascript
layui select获取自定义属性方法
Aug 15 Javascript
angularjs1.X 重构controller 的方法小结
Aug 15 Javascript
js的Object.assign用法示例分析
Mar 05 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实现WEB动态网页静态
2006/10/09 PHP
PHP函数常用用法小结
2010/02/08 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
php cli换行示例
2014/04/22 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
apache部署python程序出现503错误的解决方法
2017/07/24 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
什么是封装
2013/03/26 面试题
业务副厂长岗位职责
2014/01/03 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
总经理助理岗位职责
2015/01/31 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
博物馆观后感
2015/06/05 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
django上传文件的三种方式
2021/04/29 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
配置nginx负载均衡
2022/05/06 Servers