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…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
