如果用户选择文本的一部分,我想将该选择扩展到第一行的开头,如果他们在中间选择,则扩展到最后一行的末尾。
实现这一目标的最佳方法是什么?
最佳答案
使用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;<p></p>
<p>x.setSelectionRange(start, end);
or
x.selectionStart = start, x.selectionEnd = end;
</p>
关于javascript - 使用 Javascript 扩展文本选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4271850/