san*_*nta 20 javascript jquery
我有一个textarea和一个带有值的div.当我点击一个值时,我将其插入textarea.我需要将它插入我的光标在textarea中的位置.为什么我说WAS?因为当我将其移出并单击要插入的值时,我认为它在文本区域中失去焦点.
所以,我的问题是,有没有办法"记住"textarea中的最新光标位置,然后在该位置插入我的值?
也许它可能是字符串中的字符编号?..目前我添加如下:
input.val( function( i, val ) { return val + " " + myInsert + " "; } );
Run Code Online (Sandbox Code Playgroud)
我也使用jQuery,也许我可以使用它?
Tim*_*own 17
我编写了一个跨浏览器的jQuery插件,用于处理textareas中的插入/选择和称为Rangy输入的文本输入(可怕的名字,我真的应该想到更好的一个).这种方法的组合和Edgar Villegas Alvarado的答案中的技巧应该可以解决问题,尽管在IE中,focusout事件发生得太晚,你需要使用专有beforedeactivate事件:
var $textBox = $("#foo");
function saveSelection(){
$textBox.data("lastSelection", $textBox.getSelection());
}
$textBox.focusout(saveSelection);
$textBox.bind("beforedeactivate", function() {
saveSelection();
$textBox.unbind("focusout");
});
Run Code Online (Sandbox Code Playgroud)
稍后插入文本时,以下内容将在前一个光标位置插入文本(或覆盖以前选择的文本,如果用户选择了任何文本):
var selection = $textBox.data("lastSelection");
$textBox.focus();
$textBox.setSelection(selection.start, selection.end);
$textBox.replaceSelectedText("Some new text");
Run Code Online (Sandbox Code Playgroud)
请参见这里的jsFiddle示例:http://jsfiddle.net/rQXrJ/1/