react-dnd 拖拽事件与输入框的文本选中冲突
问题描述
当我们使用拖拽库的时候,往往会遇到拖拽的一个元素他的子孙元素有输入框类型的dom节点,当拖拽的事件绑定在该元素身上时候,发现子孙的输入框不能进行文本选中了,会按住鼠标去选中文本的时候会触发拖拽
实际的效果,鼠标无法选中文本输入框中的值

解决1:拖拽事件绑定到子孙元素
不再将绑定事件绑到整个dom,使用拖拽句柄,在拖拽库中一般都有句柄的选项,可以把拖拽的事件绑定子孙的某个节点上,一般拖拽可以绑定 className='handle' 的节点去
每个库都有自己的写法,搜索一下即可
下面以react-draggable库为例子
import Draggable from 'react-draggable';function Component() {return (<Draggable handle=".handle"><div><div className="handle"> Drag </div><div> Content ...</div></div></Draggable>);
}
解决2:保持拖拽绑定,处理事件冲突
原理是在拖拽的事件中,判断当前触发拖拽事件的节点是否是 input框,如果是就阻止拖拽事件,自然就可以就行选择文本的操作了,
下面以reac-dnd库为例:
在useDrag方法中canDrag方法中可以进行判断,返回一个false就可以阻止拖动,核心的判断是使用document.activeElement.tagName获取当前的激活事件的Dom节点的相关信息进行判断,相关的知识可以百度一下
//下面只展示核心部分
import { DndProvider, useDrag, useDrop } from 'react-dnd';const DragDom= () => {const [{ isDragging }, drag] = useDrag(() => ({type: 'aaa',canDrag: (m) => {if(document.activeElement.tagName === 'INPUT') return falsereturn true},collect: (monitor) => ({isDragging: monitor.isDragging(),}),}));return (<div ref={drag}> Drag </div>);
};
最后大功告成

2024.12.23 更新
if(document.activeElement.tagName === 'INPUT') return false
这个判断改造了 改为下面的数组形式,需要什么类型的元素不被拖动就往数组里面加
if(['INPUT', 'TEXTAREA'].some(i => i===document.activeElement.tagName)) return false
引申思考:
我们可以把不需要拖拽的元素写入某个特定的类名, 这不管元素如何布局都可以控制不拖动
下面是用于判断拖拽的伪代码
<div><div >元素1<div><div class='不允许拖拽类名'>不可以动元素2<div><div >元素3<div>
</div>useDrag(() => ({canDrag: () => {if(document.activeElement的类名 === '不允许拖拽类名') return falsereturn true}
}))相关文章:
react-dnd 拖拽事件与输入框的文本选中冲突
问题描述 当我们使用拖拽库的时候,往往会遇到拖拽的一个元素他的子孙元素有输入框类型的dom节点,当拖拽的事件绑定在该元素身上时候,发现子孙的输入框不能进行文本选中了,会按住鼠标去选中文本的时候会触发拖拽 实际的效果&…...
LeetCode:150. 逆波兰表达式求值
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:150. 逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表…...
python中向量指的是什么意思
一、向量是什么 在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小(magnitude)和方向的量。它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度&am…...
7.Vue------$refs与$el详解 ------vue知识积累
$refs 与 $el是什么? 作用是什么? ref,$refs,$el ,三者之间的关系是什么? ref (给元素或者子组件注册引用信息) 就像你要给元素设置样式,就需要先给元素设定一个 class 一样,同理,…...
一个很好的直接网站操作的回测框架
1 网址 https://cn.tradingview.com/...
【电子元器件】贴片电阻的故障现象、故障原理和解决方法
本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、故障现象概要 贴片电阻与其他电子元器件相比,虽然属于比较不容易引发故障的零部件,但是在过载或…...
基于Spring Boot + Vue的摄影师分享交流社区的设计与实现
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…...
SpringBoot项目监听端口接受数据(Netty版)
文章目录 前言服务端相关配置核心代码 客户端 前言 前言 环境: JDK:64位 Jdk1.8 SpringBoot:2.1.7.RELEASE Netty:4.1.39.Final 功能: 使用Netty监听端口接受客户端的数据,并发送数据给客户端。 服务端 …...
超标量处理器设计笔记(9) 重命名映射表、超标量处理器重命名中相关性问题
寄存器重命名 重命名映射表基于 SRAM 的重命名映射表 超标量处理器的寄存器重命名解决 RAW 相关性解决 WAW 相关性对写 RAT 进行检查(判断哪个 ARF 写入到 RAT)对写 ROB 进行检查(判断) 特殊指令处理方式 重命名映射表 重命名时…...
如何使用 Python 写入文本文件 ?
在Python编程中,写入文本文件是一项基本且重要的操作。 无论是生成日志文件、配置文件,还是进行数据输出,都需要用到这一技能。 下面,我将详细介绍如何使用Python写入文本文件,并提供一些实际开发中的建议和注意事项…...
07篇(附)--仿射变换矩阵
此篇献给某些 头铁 的小只因们,认真钻研下面的数学式吧 原理示例 首先我们以最简单的一个点的旋转为例子,且以最简单的情况举例,令旋转中心为坐标系中心O(0,0),假设有一点P0(x0,y0)࿰…...
KubeSphere搭建单节点RocketMQ
前提环境: Docker环境 Harbor仓库(可选) 参考官方文档: 《Docker 部署 RocketMQ》 https://rocketmq.apache.org/zh/docs/quickStart/02quickstartWithDocker参考官方文档: 《RocketMQ Dashboard》 https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard/ 声…...
深度学习中损失函数(loss function)介绍
深度学习中损失函数(loss function)介绍 在深度学习的宏伟城堡中,损失函数扮演着国王的角色,它决定了模型训练的方向和目标。损失函数,也被称为代价函数,是衡量模型预测与实际结果之间差异的函数。在深度学习的训练过程中&…...
Vue3+Node中使用webrtc推流至mediamtx
前言 项目的 Web 端是 Vue3 框架,后端是 GO 框架。需要实现将客户端的本地摄像头媒体流推送至服务端,而我自己从未有媒体流相关经验,最初 leader 让我尝试通过 RTSP 协议推拉流,我的思路就局限在了 RTSP 方向。 最初使用的服务端…...
React 内置的Hook学习
useState:管理组件状态 useState 是一个用于在函数组件中添加状态的 Hook。它允许你在函数组件中声明一个状态变量,并提供一个更新该状态的方法,其中与组件生命周期的关系: 初始化:当组件首次渲染时,useS…...
Flutter Navigator2.0的原理和Web端实践
01 背景与动机 在Navigator 2.0推出之前,Flutter主要通过Navigator 1.0和其提供的 API(如push(), pop(), pushNamed()等)来管理页面路由。然而,Navigator 1.0存在一些局限性,如难以实现复杂的页面操作(如移…...
初次使用uniapp编译到微信小程序编辑器页面空白,真机预览有内容
uniapp微信小程序页面结构 首页页面代码 微信小程序模拟器 模拟器页面为空白时查了下,有几个说是“Hbuilder编译的时候应该编译出来一个app.js文件 但是却编译出了App.js”,但是我的小程序结构没问题,并且真机预览没有问题 真机调试 根据defi…...
【HF设计模式】03-装饰者模式
声明:仅为个人学习总结,还请批判性查看,如有不同观点,欢迎交流。 摘要 《Head First设计模式》第3章笔记:结合示例应用和代码,介绍装饰者模式,包括遇到的问题、遵循的 OO 原则、达到的效果。 …...
【人工智能-中级】模型部署与优化:从本地实验到云端与边缘部署
模型部署与优化:从本地实验到云端与边缘部署 在机器学习和深度学习模型训练完成后,如何高效、稳定地将模型部署到生产环境中,是实际应用中的关键环节。模型部署不仅涉及技术实现,还需要考虑性能优化、资源管理和安全性等多方面因素。本文将全面探讨模型部署与优化的相关内…...
Jenkins 编写Pipeline 简介及使用初识详解
一、Jenkins Pipeline简介 Jenkins Pipeline是Jenkins的一个重要功能,Jenkins 2.0 以上才会有,一系列 Jenkins 插件将整个持续集成用解释性代码 Jenkinsfile 来描述,它允许开发者以代码的方式定义整个持续集成和交付(CI/CD)流程,包括构建、测试、部署和监控等步骤。Jenk…...
终极Qwen-Agent DevOps集成指南:AI助手的持续集成与部署全流程解析
终极Qwen-Agent DevOps集成指南:AI助手的持续集成与部署全流程解析 【免费下载链接】Qwen-Agent Agent framework and applications built upon Qwen>3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc. 项目地址: https:/…...
React Adaptive Hooks终极性能指南:如何实现智能自适应加载优化
React Adaptive Hooks终极性能指南:如何实现智能自适应加载优化 【免费下载链接】react-adaptive-hooks Deliver experiences best suited to a users device and network constraints 项目地址: https://gitcode.com/gh_mirrors/re/react-adaptive-hooks Re…...
Ubuntu 20.04 手动升级 OpenSSL 3.x 的完整指南
1. 为什么需要手动升级OpenSSL? Ubuntu 20.04默认安装的是OpenSSL 1.1.1版本,虽然这个版本仍然在维护周期内,但新发布的OpenSSL 3.x系列带来了许多重要改进。我在实际项目中遇到过这样的情况:某个新开发的加密功能必须依赖OpenSSL…...
LDC1101嵌入式驱动开发:电感-数字转换器SPI控制与实时优化
1. LDC1101嵌入式驱动库深度解析:高精度电感-数字转换器的底层控制实践LDC1101是德州仪器(TI)推出的一款高分辨率、高速度电感-数字转换器(Inductance-to-Digital Converter),专为非接触式位置检测、金属物…...
如何在5分钟内将你的电脑变身为智能语音助手:py-xiaozhi完整配置指南
如何在5分钟内将你的电脑变身为智能语音助手:py-xiaozhi完整配置指南 【免费下载链接】py-xiaozhi A Python-based Xiaozhi AI for users who want the full Xiaozhi experience without owning specialized hardware. 项目地址: https://gitcode.com/gh_mirrors/…...
python pyoxidizer
# 关于PyOxidizer的一些思考 最近在Python打包工具领域,有个工具引起了不小的讨论,那就是PyOxidizer。如果你经常需要将Python代码打包成可执行文件,或者部署到没有Python环境的机器上,可能会对这个工具感兴趣。 它到底是什么 PyO…...
NTC热敏电阻温度解算:轻量级Beta模型C++库
1. 项目概述Thermistor 是一个轻量级 C 库,专为嵌入式系统中 NTC(负温度系数)热敏电阻的温度解算而设计。其核心目标并非提供通用传感器抽象层,而是以最小资源开销、最高计算确定性,完成从原始 ADC 采样值到物理温度值…...
分享稳定可靠的TMC5160、TMC5130高性能步进电机驱动代码,支持级联,简单易用,附送原理图
TMC5160、TMC5130高性能步进电机驱动代码 代码都已长时间验证,稳定可靠运行! 图里资料就是到手资料 简介: 德国TMC步进电机驱动代码 送你OrCAD或者AD版本原理图 自己整个重新写的代码,注释详细 支持多个TMC5160级联 调用很简单&a…...
AtCoder Beginner Contest 433
AtCoder Beginner Contest 433 ABCD https://www.bilibili.com/video/BV1srUTBEEfa/ AtCoder Beginner Contest 433 https://www.bilibili.com/video/BV14xUWBYELd/ https://blog.csdn.net/2503_93669452/article/details/155140717 【实况】AtCoder Beginner Contest 433&…...
2025最权威的六大AI学术网站推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 现如今,在市面上存在的AI论文网站,它们所具备的功能是各不相同的&…...
