javascript - 如何使用 JavaScript 检测文本区域内容是否已更改

标签 javascript html event-handling

html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <textarea name="" id="a" cols="30" rows="10"></textarea>
    <textarea name="" id="b" cols="30" rows="10"></textarea>
    <textarea name="" id="c" cols="30" rows="10"></textarea>
  </body>
</html>

js

const first = document.getElementById("a");
const second = document.getElementById("b");
const third = document.getElementById("c");

first.addEventListener("input", () => {
  second.value = first.value;
});

second.addEventListener("change", () => {
  console.log("work!!")
  third.value = second.value;
});


codepen -> https://codepen.io/dmgpgdmgpg/pen/NWRxVbg?editors=1111

第一 -> 第二就可以了 但第二个 -> 第三个不起作用

因为当用户提交对元素值的更改时,会触发 input、select 和 textarea 元素的更改事件。由用户提交。 (MDN)

如何在第一个文本区域更改后检测第二个文本区域的更改?

我想从第一传递到第二,第二到第三(不是第一 -> 第三)

最佳答案

如果您想在第二个文本区域输入后更改第三个文本区域输入,与第一个文本区域的工作方式相同,请尝试以下操作:

<textarea name="" id="a" cols="30" rows="10"></textarea>
<textarea name="" id="b" cols="30" rows="10" oninput="changeText()"></textarea>
<textarea name="" id="c" cols="30" rows="10"></textarea>

oninput 事件:

该事件与onchange事件类似。不同之处在于 oninput 事件在元素的值更改后立即发生,而 onchange 在内容更改后元素失去焦点时发生。另一个区别是 onchange 事件也适用于元素。 source

编辑:

如果您需要检测 JS 触发的更改而不是用户触发的更改,可能是添加事件调度的最佳方法

const first = document.getElementById("a");
const second = document.getElementById("b");
const third = document.getElementById("c");
const event = new Event('input', {
    bubbles: true,
    cancelable: true,
});

first.addEventListener("input", () => {
  second.value = first.value;
  second.dispatchEvent(event);
});


second.addEventListener ('input', () => {
  third.value = second.value;
});

除了手动触发之外,我没有找到任何方法在非用户本人的更改时从文本区域触发事件

关于javascript - 如何使用 JavaScript 检测文本区域内容是否已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65149255/

相关文章:

javascript - React.js : e. PreventDefault(…) 不是一个函数

javascript - $(window).one ('load' ) 是如何工作的,它是如何失败的?

JavaScript 复制剪贴板

javascript - DOM 事件总是单线程运行吗?

javascript - 每次点击时旋转元素

javascript - 为什么 toString() 是一个不需要对象的方法?

javascript - jQuery :has() equivalent using document. 查询选择器

javascript - jQuery/JavaScript 正则表达式从字符串返回匹配的文本

javascript - 如何使用javascript onload 下载多个图像?

c# - 在 C# 中将参数传递给 DownloadStringCompletedEventHandler