javascript - 我可以如何操作用户编辑输入字段后显示的字符

标签 javascript events event-handling dom-events

我可以使用简单的事件处理程序来操纵输入机制吗?想象我有一个简单的文本区域

<textarea id='t'></textarea>

有没有办法改变用户按下按键后显示的字符的值?

document.getElementById('t').addEventListener("change", function(ev) {
  var ev = ev || window.event;
  // something like ev.return("X" + ev.key + "X") ?
});

这样一来,无论用户最初按下哪个键,实际插入符位置处的字符总是会被两个 X 包围?我知道,有一个 ev.preventDefault() 函数,但这只是返回什么都没有

欢迎每一个想法和每一次经验!

最佳答案

还有一些东西需要完善,例如退格键或回车键,但您明白了。

document.getElementById('t').addEventListener("keydown", function(ev) {
  ev.preventDefault();
  let textarea = document.getElementById('t');
  let cursorPos = textarea.selectionStart;

  let oldText = textarea.value;
  let insertText = 'x' + ev.key + 'x';
  let newText = [oldText.slice(0, cursorPos), insertText, oldText.slice(cursorPos)].join('');

  textarea.value = newText;
  
});
<textarea id='t'></textarea>

关于javascript - 我可以如何操作用户编辑输入字段后显示的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54469441/

相关文章:

javascript - Node.js 解析 HTML 表并将结果作为 JSON

silverlight - 我可以在EventAggregator中删除重复事件吗?

javascript - 在 VueJS 中,你在哪里监听发出的事件?

c# - 如何在 wpf 中检测多个按键按下 onkeydown 事件?

events - Flutter:如何防止按键时的默认行为?

javascript - 触发 Internet Explorer 的更改事件

javascript - 当复选框处于(未选中状态)时显示另一个文本

javascript - 为动态 OO 程序实现现有的脚本语言

javascript - 如何在柯里化(Currying)函数中访问前一个函数的结果?

javascript - 如何捕捉 GMail 自动刷新