我能从“;输入“;事件是否有更好的方法来跟踪文本更改

What kind of information can I get out of an "input" event? Is there a better way of tracking text changes?

本文关键字:方法 跟踪 文本 输入 事件 是否 更好      更新时间:2023-09-26

我正在尝试捕获对文本区域的更改,并破译对文本所做的更改。

我这样做是为了在某种程度上复制"可标记"编辑器的行为,比如Facebook上的编辑器——在那里你可以"标记"你的朋友或公共页面。

我的计划是跟踪字符串输入中"标记词"的索引(使用一些包含"标记词"位置数据的对象)。因此,这意味着,每当一个单词/短语被键入/粘贴到文本区域时,我都想知道文本中发生了什么变化,以更新"标记单词"的索引。

我遇到了一个似乎符合我需求的活动:

textAreaEl.bind("input", function (e) {});

为了继续进行此操作,我希望能够弄清楚触发此事件的文本中到底发生了什么变化。。来自'e'对象。

有没有办法破解这个事件触发前后文本的实际情况?我试了一下,但一无所获。(e..在我从键盘输入一些内容后,它甚至没有定义)。

此外,有没有更好的方法来跟踪较大字符串中的字符串?

您可以使用string.indexOf()在另一个字符串中找到一个字符串的位置(索引为0)。

要查找文本区域或输入的完整文本输入,请使用element.value

若要检测文本区域何时被修改,您可以使用addEventListener

如果你想通过改变文本区域内容的颜色等来修改文本区域的内容,那就困难多了,我甚至建议使用div元素和contenteditable

一些参考文献:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOfhttps://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

编辑:把你的问题读得慢一点,你所做的似乎是想看看你是否能察觉到发生了什么变化。然而,这样做的目的似乎是想看看添加了什么标签,因此这就成了一种x/y误解。

您不需要确切地检查所做的更改,只需要在每次按下新键时再次检查输入(甚至只检查#键)。不需要明确地找出之前和之后的区别。