Jquery 将光标移动到最后一个输入

Jquery 将光标移动到最后一个输入,jquery,html,cursor,Jquery,Html,Cursor,我有一个textarea,用户可以在其中键入文本。用户还可以按下按钮添加图像和链接等内容。该按钮即提示他们输入链接,然后在光标所在的文本区域输入正确的html。工作代码示例如下: jQuery('input#btn').click(function(e) { var link = prompt("Please paste the link", "http://"); jQuery('textarea#id1').insertAtCaret('<a href="'+link+

我有一个
textarea
,用户可以在其中键入文本。用户还可以按下按钮添加图像和链接等内容。该按钮即提示他们输入链接,然后在光标所在的文本区域输入正确的html。工作代码示例如下:

jQuery('input#btn').click(function(e) {
    var link = prompt("Please paste the link", "http://");
    jQuery('textarea#id1').insertAtCaret('<a href="'+link+'">link text</a>');
});
jQuery('input#btn')。单击(函数(e){
var link=prompt(“请粘贴链接”,“http://”);
jQuery('textarea#id1')。insertcaret(“”);
});
.insertcaret()
函数是由Daniel Beck精心创建的。它在textarea中查找光标的位置,以便可以在此处添加html块

但是,在jQuery添加了这个html块之后,光标不再位于文本区域,而是集中在按下的按钮上。我希望光标保持在按下此按钮之前的位置(在添加的html块之后)

是否可以在文本区域中找到最后输入的文本,然后将光标移动到该区域


注意,此输入可能位于
文本区域中已写入文本的任何位置。首先,您必须将焦点放回文本区域

var te = document.getElementById('id1');
te.focus();
然后将光标设置到特定位置

var mySavedPosition = 3 // or whatever it was before
te.selectionStart = mySavedPosition;
te.selectionEnd = mySavedPosition;
就这样

因此,在您的示例中,它可能如下所示:

jQuery('input#btn').click(function(e) {
    var link = prompt("Please paste the link", "http://");
    var te = document.getElementById('id1');
    var pos = te.selectionStart;
    jQuery('textarea#id1').insertAtCaret('<a href="'+link+'">link text</a>');
    te.selectionStart = pos;
    te.selectionEnd = pos;
});
jQuery('input#btn')。单击(函数(e){
var link=prompt(“请粘贴链接”,“http://”);
var te=document.getElementById('id1');
var pos=te.selectionStart;
jQuery('textarea#id1')。insertcaret(“”);
te.selectionStart=pos;
te.selectionEnd=pos;
});
很抱歉,我不是jQuery的朋友,所以我只使用原生JS

使现代化 我忽略了您希望光标位于插入位置的末尾。因为我不知道插入文本的长度,所以我最好从末尾获取位置

jQuery('input#btn').click(function(e) {
    var link = prompt("Please paste the link", "http://");
    var te = document.getElementById('id1');
    var pos = te.textLength - te.selectionStart;
    jQuery('textarea#id1').insertAtCaret('<a href="'+link+'">link text</a>');
    te.selectionStart = te.textLength - pos;
    te.selectionEnd = te.textLength - pos;
});
jQuery('input#btn')。单击(函数(e){
var link=prompt(“请粘贴链接”,“http://”);
var te=document.getElementById('id1');
var pos=te.textLength-te.selectionStart;
jQuery('textarea#id1')。insertcaret(“”);
te.selectionStart=te.textLength-pos;
te.selectionEnd=te.textLength-pos;
});

为已经给定模糊方法的元素设置属性怎么样。然后,您可以通过attributeI搜索元素,从我的头顶上,至少可以想到两种不同的方法。第一种方法是聚焦相同的元素,但根据插入内容的长度将焦点移动到X个字符数。这需要在当前插入文本区域内容的实际函数中完成。您还可以尝试搜索您输入的任何文本,并在该内容的最后一个字符后设置焦点-基本上是在文本区域的内容中读取,搜索您刚刚输入的内容的匹配项,然后从那里开始。