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 相关文章推荐
短信提示使用 特效
Jan 19 Javascript
jQuery阻止事件冒泡具体实现
Oct 11 Javascript
基于socket.io和node.js搭建即时通信系统
Jul 30 Javascript
JavaScript中的Function函数
Aug 27 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
Dec 24 Javascript
JavaScript实现星星等级评价功能
Mar 22 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
Oct 19 Javascript
React.js绑定this的5种方法(小结)
Jun 05 Javascript
React中嵌套组件与被嵌套组件的通信过程
Jul 11 Javascript
vue实现百度下拉列表交互操作示例
Mar 12 Javascript
JS前端使用canvas实现扩展物体类和事件派发
Aug 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
详解Vue之事件处理
2020/07/10 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
python和ruby,我选谁?
2017/09/13 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
python基础教程之while循环
2019/08/14 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
软件设计的目标是什么
2016/12/04 面试题
音乐教师求职信范文
2015/03/20 职场文书
严以律己学习心得体会
2016/01/13 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python