VUE自定义指令去除element输入框的空格(同时防止光标抖动)

这篇博客介绍了如何在Vue TypeScript项目中创建一个自定义指令`v-removeSpace`,用于从Element UI输入框中删除空格,并防止光标位置异常抖动的问题。作者提供了`removeSpace.ts`的代码实现,并说明在`main.js`中引入该指令的方法,以及如何在模板中正确使用该指令。
摘要由CSDN通过智能技术生成

技术能力有限,代码写法比较粗糙,各位大佬借鉴一下就好,但我可保证这是我个人原创而且真实可用。
项目是ts的项目,如果想用到js的项目,改一下代码的写法就可以了
removeSpace.ts

import Vue, {
    DirectiveOptions } from 'vue'

const directive: DirectiveOptions = {
   
  componentUpdated (el, {
    value, modifiers }) {
   
    // // 获取真实的inputDOM元素
    let input:any = el.children[0]
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个实现element dialog顶部拖拽的Vue自定义指令,并且限制其不能拖离页面的示例代码: ```javascript // draggable.js export default { inserted(el, binding) { const dialogHeaderEl = el.querySelector('.el-dialog__header') const dialogWrapperEl = el.querySelector('.el-dialog__wrapper') const containmentEl = binding.value ? document.querySelector(binding.value) : dialogWrapperEl let isDragging = false let lastX = 0 let lastY = 0 dialogHeaderEl.style.cursor = 'move' dialogHeaderEl.addEventListener('mousedown', (e) => { isDragging = true lastX = e.clientX lastY = e.clientY document.addEventListener('mousemove', handleMouseMove) document.addEventListener('mouseup', handleMouseUp) }) function handleMouseMove(e) { if (isDragging) { const deltaX = e.clientX - lastX const deltaY = e.clientY - lastY const dialogRect = dialogWrapperEl.getBoundingClientRect() const containmentRect = containmentEl.getBoundingClientRect() let newLeft = dialogRect.left + deltaX let newTop = dialogRect.top + deltaY // Limit the dialog to the containment element if (newLeft < containmentRect.left) { newLeft = containmentRect.left } if (newTop < containmentRect.top) { newTop = containmentRect.top } if (newLeft + dialogRect.width > containmentRect.right) { newLeft = containmentRect.right - dialogRect.width } if (newTop + dialogRect.height > containmentRect.bottom) { newTop = containmentRect.bottom - dialogRect.height } dialogWrapperEl.style.left = newLeft + 'px' dialogWrapperEl.style.top = newTop + 'px' lastX = e.clientX lastY = e.clientY } } function handleMouseUp() { isDragging = false document.removeEventListener('mousemove', handleMouseMove) document.removeEventListener('mouseup', handleMouseUp) } } } ``` 上述代码定义了一个名为`draggable`的Vue自定义指令,可以用于实现element dialog顶部拖拽的效果,并且限制其不能拖离页面。该指令监听了dialog header元素的mousedown、mousemove和mouseup事件,并且根据鼠标的移动距离来实现拖拽效果。同时,通过传入`value`参数来指定限制拖拽区域的父级元素选择器。 使用该自定义指令的示例如下: ```vue <template> <el-dialog v-draggable=".container"> <div class="el-dialog__header"> <span>{{ title }}</span> </div> <div class="el-dialog__body"> {{ content }} </div> </el-dialog> </template> <script> import draggable from '@/directives/draggable' export default { directives: { draggable }, data() { return { title: 'Dialog Title', content: 'Dialog Content' } } } </script> ``` 在上述代码中,我们为el-dialog元素添加了`v-draggable=".container"`指令,表示限制拖拽区域的父级元素选择器为`.container`。注意,我们需要为dialog header元素添加一个类名为`el-dialog__header`的div,以便在指令中获取到该元素进行拖拽。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值