javascript - 使用 Javascript 扩展文本选择

标签 javascript dom

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

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

最佳答案

使用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/

相关文章:

html - 创建具有不同子类型的自定义元素

javascript - ember-cli 迁移 : global app module import

javascript - 过滤警报 Javascript,如何

Javascript 局部作用域变量名

javascript - 带有 promise 的 Protractor 变量范围

javascript - 检测 JavaScript 中的选项卡/窗口激活

javascript - 删除 2 个 div 之间的单个字符

jquery - addClass 方法不起作用

javascript - Chrome 中的并发 DOM 节点修改?

javascript - 将 webcrypto key 导出为 PEM 格式