javascript - 突出显示输入字段中的文本
问题描述
我正在尝试在 JS 中创建一个脚本,以突出显示用户键入的某些文本(有点像https://regex101.com/中的“测试字符串”框),但似乎无法更改文本在输入字段本身内,因为它正在被使用。有谁知道我该怎么做?
解决方案
无法设置input
字段(或 a textarea
)内容的样式。
有两种方法可以伪造它。第一个是contenteditable
,您可以在其中直接编辑 HTML 元素,例如<div>
. 这就是浏览器中大多数所见即所得编辑器的工作方式。由于它是一个 HTML 元素,它可以有子结构,并且它的后代元素可以独立设置样式。
第二个,由 regex101 使用,工作量更大:用另一个元素覆盖真实的输入字段。在那个网站上,您可能认为您正在编辑一个输入字段,但您的按键被一个假的(并且永远是空的)捕获,它被显示漂亮颜色和框textarea
的 a 所掩盖。div
每次按下一个键时,textarea 就会被清空、移动和调整大小,键本身会应用于输入数据,然后将其呈现在 textarea 之上,使其模糊。那里发生的一切都被 JavaScript 伪造,看起来、感觉和行为都像一个输入字段,但它实际上并不存在。执行此操作的代码非常复杂,超出了 Stack Overflow 问题的范围。
推荐阅读
- batch-file - 通过批处理文件将一台机器的UUID和IP存储在一个文件中
- android - 原因:org.gradle.api.tasks.TaskExecutionException:任务':app:processDebugGoogleServices'的执行失败
- android - 在 Android 中使用 Star Micronics 打印机无法打印多语言收据
- excel - 用户表单组合框,我可以在其中根据单元格颜色编码添加或删除项目
- elasticsearch - 通过环境变量(docker)配置elasticsearch
- bash - 终端启动问题
- django - /fileupload/ 处的 NoReverseMatch :未找到“视图”的反向。“视图”不是有效的视图函数或模式名称
- java - 如何在java中的main方法之后执行静态块?
- javascript - 将日期最小值设置为始终比当前日期早 10 天
- java - Android DownloadManager 在某些情况下不起作用