2010-11-24 59 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;