设置自定义事件侦听器后无法撤消更改的 keydown 事件

问题描述

这是演示。例如,我想在按下 a 后得到一个 b,如下所示:

const text = document.getElementById('text');
text.addEventListener('keydown',(e) => {
  if (e.key === 'a') {
    e.preventDefault();
    const start = e.target.selectionStart;
    const end = e.target.selectionEnd;
    e.target.value = `${e.target.value.substring(0,start)}b${e.target.value.substring(end)}`;

    e.target.selectionStart = start + 1;
    e.target.selectionEnd = start + 1;
  }
})
<textarea id="text"></textarea>

但是我在输入 a 后无法撤销(control+z)输入,因为 b只是呆在那里,我不能去之前的州。

我的问题是如何在输入 a 之前存储状态?所以像以前一样(没有事件侦听器),我可以按 control+z 撤消我的输入。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)