Javascript输入更改

Javascript input change

本文关键字:输入 Javascript      更新时间:2023-09-26

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

例如:

您按键盘上的 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)">

可能,这不可能以这种方式实现,但到目前为止我没有任何其他想法......

我找到了另一种方法可以做到这一点document.execCommand()

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

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

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