Javascript 输入变化

Javascript input change

是否可以更改键盘的输入值?

例如:

您按下键盘上的 a 键,但 b 将被输入到输入元素中,而不是 a

您键入 abc 但在输入元素中将是 def.

我尝试捕获 keydown 事件,然后使用 CustomEvent / Event 触发 keydown 事件,但它对我不起作用。事件捕获很好,但是当我使用新的 charCodekeyCode 创建另一个 keydown 事件时, 'new' 字符将不会输入到输入中。

那么,是否可以在不使用 value 属性 或任何其他处理或修改输入的全部内容的方法的情况下,将某些内容写入插入符号的位置.所以只需插入或粘贴一个字母即可。

JS

function keydown(e) {
    e.preventDefault();

    var event = new Event('keydown');
    event.charCode = 65;
    element.dispatchEvent(event);
}

HTML

<input type="text" onkeydown="keydown(event)">

可能,这不可能通过这种方式实现,但目前我还没有其他想法...

使用以下代码在您键入内容时获取光标位置。获得光标位置后,您可以替换字符并将文本设置回文本框。让我知道您希望代码将光标放回替换字符的位置。

<script type="text/javascript">
function getLocation(ctrl)
{
    var position = 0;

    if (document.selection) {

        ctrl.focus ();
        var sel = document.selection.createRange ();

        sel.moveStart ('character', -ctrl.value.length);

        position = Sel.text.length;
    }
    else if (ctrl.selectionStart || ctrl.selectionStart == '0')
        position = ctrl.selectionStart;

    alert (position);
}

</script>
<input type="text" onkeyup="getLocation(this);"></input>

我找到了另一种方法 document.execCommand():

document.querySelector("input")
.addEventListener("keypress", function (event) {
  event.preventDefault();
  document.execCommand('insertText', false, 'b');
})
<input>