contenteditable可编辑功能,监听输入内容与回车操作

news2025/1/18 4:35:28

contenteditable

在div元素上添加contenteditable="true" 可以让div变成可编辑元素

 <div class="word-block" contenteditable="true"></div>

在这里插入图片描述
同时还支持回车换行
在这里插入图片描述
回车后就会生成一个div元素
在这里插入图片描述
添加 -webkit-user-modify: read-write-plaintext-only; 属性只显示文本不会显示其他标签

禁止检查拼写

可以看到在输入单词时,会有红色波浪线,可以添加spellcheck="false" 属性禁止

<div class="word-block" contenteditable="true" spellcheck="false"></div>

在这里插入图片描述

监听输入控制只输入英文

input监听输入

使用@input方法监听输入

<div 
    class="word-block" 
    contenteditable="true" 
    spellcheck="false"
    @input="handleInput"
></div>
const handleInput = (event)=>{
    console.log("键入字符",event)
    const inputElement = event.target;
    const text = inputElement.textContent;
    
    // 使用正则表达式检查是否为英文字符
    const regex = /^[a-zA-Z\s]*$/; // 只允许输入英文字符和空格
    
    if (!regex.test(text)) {
        // 如果输入内容不符合要求,清除非英文字符
        inputElement.textContent = text.replace(/[^a-zA-Z\s]/g, '');
    }
}
const regex = /^[a-zA-Z\s]*$/;: 这行代码定义了一个正则表达式对象 regex。正则表达式 /^[a-zA-Z\s]*$/ 表示匹配以字母(大小写不限)和空格组成的字符串。其中:

^ 表示匹配字符串的开头。
[a-zA-Z\s] 表示匹配字母和空格,a-zA-Z 表示匹配任意字母(大小写不限),\s 表示匹配空格。
* 表示匹配前面的字符零次或多次。
$ 表示匹配字符串的结尾。
regex.test(text): 这行代码调用正则表达式对象 regex 的 test() 方法,用来检查字符串 text 是否符合正则表达式的匹配规则。如果 text 中只包含字母和空格,test() 方法将返回 true;否则返回 false。

但是使用@input有个弊端,如果输非英文字母,光标就会跑动最前面
在这里插入图片描述

将光标移到最后

在输入非英文字符时,将光标移动到最后面

使用document.createRange() 方法用于创建一个新的 Range 对象,Range 对象代表文档中的一段连续的区域

let currentDom = document.getElementsByClassName('word-block')[0];
let range = document.createRange();
 range.selectNodeContents(currentDom);
 range.collapse(false);
 let sel = window.getSelection();
 sel?.removeAllRanges();
 sel?.addRange(range);
  • 第一行代码 let currentDom = document.getElementsByClassName(‘word-block’)[0]; 用于获取文档中 class 为 ‘word-block’ 的第一个元素,并将其赋值给变量 currentDom。

  • 接着创建一个 Range 对象,let range = document.createRange(); 这段代码用于创建一个新的 Range 对象。

  • 然后,range.selectNodeContents(currentDom); 将选取 currentDom 元素的所有内容。

  • 接下来,range.collapse(false); 将选区的边界折叠到选区的结束位置,即将选区的焦点放在内容的末尾。

  • 这一行 let sel = window.getSelection(); 用于获取当前文档的 Selection 对象。

  • sel?.removeAllRanges(); 会清除当前 Selection 对象中的所有选区。

  • 最后,sel?.addRange(range); 将之前创建的 Range 对象添加到 Selection 对象中,这样就将选区设置为了 currentDom 元素的内容的末尾。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1622797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring DisposableBean作用,在spring Bean销毁时的钩子 以及@PreDestroy

DisposableBean 作用 在Spring框架中&#xff0c;DisposableBean是一个接口&#xff0c;它定义了一个单一的方法&#xff0c;用于在Spring容器关闭时或一个由Spring管理的Bean不再需要时执行特定的清理操作。当一个Bean实现了DisposableBean接口&#xff0c;Spring容器会在销毁…

VTC视频时序控制器原理以及Verilog实现

文章目录 一、前言二、视频时序控制原理三、Verilog实现3.1 代码3.2 仿真以及分析 一、前言 VTC&#xff08;Video Timing Controller&#xff09;是一种用于产生视频时序的控制器&#xff0c;在图像领域经常会输出各种分辨率和帧率的视频格式。因此为了方便&#xff0c;设置一…

C++: IO流

目录 1、C语言输入输出 流的概念&#xff1a; 2、CIO流 3、C文件IO流 1、C语言输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf () 与 printf() 。 scanf(): 从标准输入设备 ( 键 盘 ) 读取数据&#xff0c;并将值存放在变量中 。 printf(): 将指定的文…

C语言入门课程学习笔记2

C语言入门课程学习笔记2 第8课 - 四则运算与关系运算第9课 - 逻辑运算与位运算第10课 - 深度剖析位运算第11课 - 程序中的选择结构 本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 第8课 - 四则运算与关系…

pycharm安装AI写代码插件

在IDE安装特慢&#xff08;可能找不到插件&#xff09; 去官网搜一下 对应安装包 下载zip在IDE解压 插件--已安装齿轮图标--从磁盘里安装 选择下载的插件 应用 --重启OK

在ubuntu上安装mysql(在线安装需要)

安装环境 虚拟机系统&#xff1a; Ubuntu 打开虚拟机 安装步骤 (1) 安装 将系统中的所有软件包都升为最新版本 sudo apt update 安装 MySQL sudo apt install mysql-server查询 MySQL 版本 mysql --version(2) MySQL 安全设置 进入 MySQL Shell sudo mysql设置 …

window平台C#实现软件升级功能(控制台)

window平台C#实现软件升级功能 之前用window窗体实现过一个升级功能&#xff0c;后来发现多个项目都需要升级功能&#xff0c;现改成可接收参数实现一种通用的exe.改用控制台方式实现这个升级功能&#xff0c;这样不仅实现了接收参数&#xff0c;升级程序体积也比原来的窗体形式…

java自动生成pojo,springboot自动生成pojo

第一步 pom引入依赖 <dependencies><!-- mybatis-generator --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.7</version></dependency>&…

开源电商小程序源码+搭建 支持全平台端口+商家自营+多商户入驻 带分销功能 可自用DIY界面

开源电商小程序源码系统为商家提供了一个快速搭建和部署电商平台的解决方案。商家可以利用该系统&#xff0c;在较短的时间内构建出功能齐全、界面美观的电商小程序&#xff0c;无需从零开始编写代码&#xff0c;从而大大节省了开发成本和时间。 分享一个开源电商小程序源码系…

OpenUI在windows下部署使用

OpenUI OpenUI是一个基于Python的AI对话平台&#xff0c;支持接入多种AI模型。 通过聊天的方式来进行UI设计&#xff0c;你可以通过文字来描述你想要的UI界面&#xff0c;OpenUI可以帮你实时进行渲染出效果 安装OpenUI 这里预设你的电脑上已安装git、Python和pip&#xff0…

Nginx 搭建Web服务

题目&#xff1a; 1.web服务器的主机ip&#xff1a;192.168.78.128 2.web服务器的默认访问目录为/var/www/html 默认发布内容为default‘s page 3.站点news.timinglee.org默认发布目录 为/var/www/virtual/timinglee.org/news 默认发布内容为 news.timinglee.org 4.站点login.t…

Power BI 如何解决月份排序错误/乱序问题(自定义顺序/正确排序)

问题描述 在创建图标时&#xff0c;月份标签没有按照正确的顺序排列。 解决方案&#xff1a; Sort by Column 单击选中排序错误的列&#xff08;MMM&#xff09;根据列排序 (sort by Column)选择需要根据哪一列排序。 这里选择的是Month列&#xff0c;这一列有月份的序号1-…

如何通过香港站群服务器提升跨境电商交易效率?

如何通过香港站群服务器提升跨境电商交易效率? 在全球电子商务迅速发展的今天&#xff0c;跨境电商已成为企业拓展国际市场、获取更多商机的重要途径。然而&#xff0c;跨境电商面临的挑战也不容小觑&#xff0c;尤其是在交易效率方面。利用香港站群服务器&#xff0c;不仅可…

做抖音小店如何选品?这几个技巧,精准“锁定”爆品!

哈喽~我是电商月月 做抖音小店最重要的就是选品&#xff0c;这点大家都知道 一个店铺商品选的好&#xff0c;顾客喜欢&#xff0c;质量完好&#xff0c;销量和售后都不用操心&#xff0c;和达人合作时&#xff0c;爆单的机会也就越高 那这种商品是什么样的&#xff0c;新手开…

快速了解-BTP

名词了解 BTP&#xff1a;SAP Business Technology Platform 是一个技术和业务的平台ETWEAVER &#xff08;SAP NW&#xff09;&#xff1a;NetWeaver本质上是SAP一系列技术产品的集成平台PAAS Cloud Foundry&#xff08;云原生&#xff09;&#xff1a;开源云服务平台烟囱式…

通配符/泛域名证书的五大优势

在数字化时代&#xff0c;网络安全成为企业及个人关注的焦点。为了确保在线信息传输的安全性与私密性&#xff0c;SSL/TLS证书成为网站加密通信的重要工具。其中&#xff0c;通配符证书作为一种特殊类型的SSL证书&#xff0c;以其独特的优势在众多证书类型中脱颖而出&#xff0…

Python程序设计教案

文章目录&#xff1a; 一&#xff1a;软件环境安装 第一个软件&#xff1a;pycharm 第二个软件&#xff1a;thonny 第三个软件&#xff1a;IDIE&#xff08;自带的集成开发环境&#xff09; 二&#xff1a;相关 1.规范 2.关键字 3.Ascll码表 三&#xff1a;语法基础…

LeetCode-2007. 从双倍数组中还原原数组【贪心 数组 哈希表 排序】

LeetCode-2007. 从双倍数组中还原原数组【贪心 数组 哈希表 排序】 题目描述&#xff1a;解题思路一&#xff1a;排序 哈希表解题思路二&#xff1a;排序 队列解题思路三&#xff1a;消消乐 题目描述&#xff1a; 一个整数数组 original 可以转变成一个 双倍 数组 changed &…

使用Spring 完成转账业务添加日志功能

(完整的代码在文章附带文件中 , 文章里的代码仅作展示 , 可能有部分不完善 代码地址 :下载:https://javazhang.lanzn.com/i5oLI1vyiile 密码:1234 ) 任务目标 具体实现方法和心得 步骤1. 导入依赖项Spring依赖 , aop依赖,德鲁伊依赖,mybatis依赖 , mysql驱动 , mybatis-sprin…

jar包做成Windows Service 服务,不能访问网络映射磁盘

在Windows操作系统中&#xff0c;系统服务&#xff08;Services&#xff09;、计划任务&#xff08;Scheduled Tasks&#xff09;以及很多系统调用都是以SYSTEM系统账号进行操作的。用 net use 挂载&#xff0c;或者在文件管理器上直接挂载&#xff0c;挂载卷是以 Administrato…