【element ui】input输入控件绑定粘贴事件,从 Excel 复制的数据粘贴到输入框(el-input)时自动转换为逗号分隔的数据

目录

1、需求

在 Vue 2 和 Element UI 中,要实现从 Excel 复制空格分隔的数据,并在粘贴到输入框(el-input)时自动转换为逗号分隔的数据

2、实现思路:

  1. <el-input/ >组件是由外层< div >和内层的< input>组成的,
    根据浏览器的事件传递机制(先捕获,后冒泡):粘贴的时候会先执行绑定在外层div上的paste事件捕获方法, 然后再到内层的input,
    因此可以在组件上捕获监听paste事件,
  2. 在 paste 事件处理函数中,获取剪贴板中的文本数据,
  3. 将空格分隔的数据转换为逗号分隔的数据,
  4. 将转换后的数据赋值给 v-model 绑定的变量。

3、控件绑定粘贴事件

html 复制代码
  <el-input
            v-model="storesName"
            clearable
            style="margin-left: 6px;width: 40rem"
            placeholder="请输入编码或名称,多项输入以英文,号间隔"
            class="details-input"
            @paste.native="handlePaste"
          />

事件修饰符说明:

native: 表明这个是dom的原生事件,如果不加native, vue会认为paste是一个自定义事件,必须要在组件内手动触发, 那么在粘贴的时候自然就不会触发了

4、代码实现

javascript 复制代码
    handlePaste(e) {
      // 阻止默认粘贴行为(可选,取决于你是否需要立即显示原始数据)
      e.preventDefault()
      // 获取剪贴板中的文本数据
      const text = (e.originalEvent || e).clipboardData.getData('text/plain').trim()
      console.log(text, '文本粘贴')
      // 将空格分隔的数据转换为逗号分隔的数据
      const replacedText = text.replace(/\s+/g, ',')
      // 将转换后的数据赋值给 inputValue
      this.storesName = replacedText
    },

handlePaste 方法会阻止默认的粘贴行为,然后获取粘贴板上的文本。接着,使用 String.prototype.replace 方法和一个正则表达式 \s+ 来匹配一个或多个空格字符,并将它们替换为英文逗号。最后,将处理后的文本赋值给 inputValue。

/\s+/g 是一个正则表达式,用于匹配一个或多个空白字符(包括空格、制表符、换行符等)。这个正则表达式使用了两个特殊的字符:

\s:匹配任何空白字符。

+:表示匹配一个或多个前面的字符(在这里是 \s)。

g:表示全局搜索,即替换所有匹配的项,而不仅仅是第一个。

在代码中,text.replace(/\s+/g, ',') 的作用是将字符串 text 中所有连续的空白字符替换为一个英文逗号 ,。

参考文章:
elementui输入控件绑定粘贴事件对复制数据做处理
阻止element组件中的的粘贴功能
vue element-ui 后台中实现点击按钮,将文本内容复制到剪贴板

🚀写在最后

希望我的分享能够帮助到更多的人,如果觉得我的分享有帮助的话,请大家一键三连支持一下哦~
❤️原创不易,期待你的关注与支持~
点赞👍+收藏⭐️+评论✍️
😊之后我会继续更新前端学习小知识,关注我不迷路~

相关推荐
码农秋1 天前
Element Plus DatePicker 日期少一天问题:时区解析陷阱与解决方案
前端·vue.js·elementui·dayjs
招风的黑耳2 天前
基于 Axure 与 Element UI 风格的拖动行排序表格设计
elementui·axure·表格·拖动
我是小路路呀3 天前
element级联选择器:已选中一个二级节点,随后又点击了一个一级节点(仅浏览,未确认选择),此时下拉框失去焦点并关闭
javascript·vue.js·elementui
暴富的Tdy3 天前
【使用 Vue2 脚手架创建项目并实现主题切换功能涵盖Ant-Design-Vue2/Element-UI】
vue.js·elementui·anti-design-vue·vue切换主题
小魏的马仔3 天前
【elementui】el-date-picker日期选择框,获取焦点后宽度增加问题调整
前端·vue.js·elementui
道之极万物灭4 天前
NiceGUI之Button操作(ElementPlus组件库)
python·elementui·web组件·nicegui
芳草萋萋鹦鹉洲哦4 天前
【elementUI】form表单rules没生效
前端·javascript·elementui
一只小阿乐5 天前
前端vue3 web端中实现拖拽功能实现列表排序
前端·vue.js·elementui·vue3·前端拖拽
方安乐6 天前
vue3 el-select懒加载以及自定义指令
javascript·vue.js·elementui
哆啦A梦15886 天前
商城后台管理系统 02 添加规格参数-动态表单
javascript·vue.js·elementui