繁体   English   中英

如何使用 JavaScript 检测 textarea 内容是否已更改

[英]How to detect if textarea content has changed with JavaScript

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;
});


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

第一个->第二个没问题,但第二个->第三个不行

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

如何在第一个 textarea 更改后检测第二个 textarea 的更改?

我想通过第一到第二,第二到第三(不是第一->第三)

如果您想在第二个输入后更改第三个 textarea 输入,与第一个输入相同,请尝试以下操作:

<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>

输入事件:

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

编辑:

如果您需要检测 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;
});

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM