首页 > web前端 > css教程 > 如何使用 JavaScript 设置输入字段值的特定部分的样式?

如何使用 JavaScript 设置输入字段值的特定部分的样式?

Linda Hamilton
发布: 2024-11-28 13:38:14
原创
970 人浏览过

How Can I Style Specific Parts of an Input Field Value Using JavaScript?

设置输入字段值的特定部分的样式

内字段中,更改用户输入的特定部分的样式可能具有挑战性。由于样式通常适用于整个元素,因此无法直接实现。

基于 JavaScript 的解决方案

为了规避此限制,可以采用基于 JavaScript 的方法。将 替换为具有容器元素(如

<div>)的元素并将其样式设置为类似于输入字段。

输入字段的划分

当用户键入时,识别该字段的三个部分:

  • 变更前(未编辑)
  • 变更时(已编辑)
  • 更改后(未编辑)

将这些分区包装在单独的元素中,例如 。标记示例:

<div>
登录后复制

事件处理和样式调整

使用 click、keydown 和 keyup 事件动态识别三个分区。根据需要对这些跨度应用样式以实现所需的效果。

示例 HTML:

<div class="input">
登录后复制

用于替换输入的 JavaScript:

let input = document.getElementById("fakeInput");
let originalInput = document.querySelector("input");
input.replaceWith(originalInput);
登录后复制

事件处理和跨度添加:

originalInput.addEventListener("input", (e) => {
  let before = originalInput.value.substring(0, e.target.selectionStart);
  let edited = originalInput.value.substring(e.target.selectionStart, e.target.selectionEnd);
  let after = originalInput.value.substring(e.target.selectionEnd);

  let nonEditedBefore = document.createElement("span");
  nonEditedBefore.className = "nonEdited before";
  nonEditedBefore.textContent = before;

  let editedSpan = document.createElement("span");
  editedSpan.className = "edited";
  editedSpan.textContent = edited;

  let nonEditedAfter = document.createElement("span");
  nonEditedAfter.className = "nonEdited after";
  nonEditedAfter.textContent = after;

  input.appendChild(nonEditedBefore);
  input.appendChild(editedSpan);
  input.appendChild(nonEditedAfter);
});
登录后复制

以上是如何使用 JavaScript 设置输入字段值的特定部分的样式?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板