使用Javascript扩展文本选择

时间:2010-11-24 21:50:12

标签: javascript dom

如果用户选择了一部分文本,我想将该选择扩展到第一行的开头,如果他们在中间选择,则将其扩展到最后一行的结尾。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

使用setSelectionRange(beg,end)或selectionStart / selectionEnd更改选择。 基本上从当前选择范围,您尝试获取您尝试选择的跨度索引的索引(开始,结束),然后更改选择。 假设您要将选择包装/扩展到最近的“NEWLINE”,这里是一个示例代码:

var x = $("#input input:first")[0];
var value = x.value;
var NEWLINE = '\n'; // whatever is your newline delimiter.
var start = value.substr(0, x.selectionStart).lastIndexOf(NEWLINE);
if (start == -1) start = 0;
var end = value.substr(x.selectionEnd).indexOf(NEWLINE);
if (end == -1) end = value.length;

x.setSelectionRange(start, end); or x.selectionStart = start, x.selectionEnd = end;