2010-11-24 54 views
0

如果用户选择文本的一部分,我想将选择范围扩展到第一行的开始和最后一行的结尾(如果他们在中间选择的话)。使用Javascript扩展文本选择

完成此操作的最佳方法是什么?

+1

你在像textarea这样的可编辑区域内工作吗? – 2010-11-24 21:52:02

回答

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;