gpt4 book ai didi

javascript - 将光标移动到输入的末尾

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:46 24 4
gpt4 key购买 nike

这是我的小 jquery 插件,可以在输入时用其他符号替换每个英文符号。这里一切正常,除了当我输入一个比输入本身长的长单词时,光标移到输入之外,单词的最后部分不可见。只需访问下面的链接并输入一些内容(没有空格),您就会明白我的意思。

http://jsfiddle.net/beLMf/

有解决办法吗?

最佳答案

您有两个问题,一个是您总是将文本添加到行尾,即它是否与您要查找的字符匹配。您应该改为在插入符号(光标)位置插入:

jQuery.fn.extend({
insertAtCaret: function(myValue){
return this.each(function(i) {
if (document.selection) {
//For browsers like Internet Explorer
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
}
else if (this.selectionStart || this.selectionStart == '0') {
//For browsers like Firefox and Webkit based
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
})
}
});

然后改变你的线路:

$this.val( $this.val() + String.fromCharCode( i + 4304 ) );

$this.insertAtCaret(String.fromCharCode( i + 4304 ));
$("#switcher").focus();
$(this).focus();

这将解决您的问题并解决编辑字符串任何部分的问题。

更新:为了使光标位置更新,我们必须将焦点移开然后再回到元素

我对 jsFiddle 进行了更改还有一个捕获光标位置的功能,我想用它来解决你的问题。它只是输出到 console.log,您可以删除它。

关于javascript - 将光标移动到输入的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com