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 新节点的创建 删除 的步骤
Jul 04 Javascript
jQuery Ajax提交表单查询获得数据实例代码
Sep 19 Javascript
jquery 获取表单元素里面的值示例代码
Jul 28 Javascript
通过Jquery的Ajax方法读取将table转换为Json
May 31 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
Oct 17 Javascript
javascript实现控制文字大中小显示
Apr 28 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
Oct 21 Javascript
JS数组排序方法实例分析
Dec 16 Javascript
angularjs2中父子组件的数据传递的实例代码
Jul 05 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
May 18 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
微信小程序中data-key属性之数据传输(经验总结)
Aug 22 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读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
php之Memcache学习笔记
2013/06/17 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
PDO::_construct讲解
2019/01/27 PHP
PHP7新特性
2021/03/09 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
Python向日志输出中添加上下文信息
2017/05/24 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
程序员经常用到的UNIX命令
2015/04/13 面试题
自主招生自荐信
2013/12/08 职场文书
淘宝店策划方案
2014/06/07 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
布达拉宫导游词
2015/02/02 职场文书
考试后的感想
2015/08/07 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python