赋值时能否防止输入端插入符号跳转到末尾?

Is it possible to prevent jumping caret in input to the end when assigning value?

本文关键字:符号 插入 输入端 赋值      更新时间:2023-09-26

我有一个<input>:

<input type="text" onKeyUp="if(!(event.keyCode>36&&event.keyCode<41)){this.value=check(this.value)}">

和动作:

function check(num){
    num=num.replace(/num/g,"Nº");
    return num;
}

JSFIDDLE

问题是当我赋值输入插入符号跳转到结束。是否有可能防止它-我希望它留在我最初点击的地方?

不是JavaScript忍者所以我不知道这样做是否正确但你可以简单地在替换值

后更新插入符号的位置

在这个例子中,check函数接受输入作为参数:

function check(num) {
    var selectionStart = num.selectionStart;    
    num.value = num.value.replace(/num/g,"Nº");
    num.selectionStart = selectionStart;
    num.selectionEnd = selectionStart;
}

您可以在这个JSFiddle

中看到一个工作示例。

这可能会导致奇怪的行为,如果你试图用键盘选择整个文本(选择将消失)。我认为您应该使键代码约束更严格一些,以避免这种情况。