Javascript输入更改

时间:2016-03-04 18:25:30

标签: javascript javascript-events keyboard contenteditable

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

例如:

您按键盘上的ti.map键,但a将输入到输入元素,而不是b

您输入a但在输入元素中将是abc

我尝试捕获def事件,然后使用keydown / CustomEvent触发keydown事件。但它对我没有用。事件捕获很好但是当我使用新的Eventkeydown新的'来创建其他charCode事件时字符不会被输入输入。

那么,是否可以在输入元素中将某些内容写入插入符的位置,而不使用keyCode属性或任何其他处理或修改输入内容的方法。所以只需插入或粘贴一封信。

JS

value

HTML

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

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

可能这样做是不可能的,但到目前为止我还没有其他任何想法......

2 个答案:

答案 0 :(得分:1)

我找到了使用document.execCommand()执行此操作的另一种方法:

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

答案 1 :(得分:0)

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

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