我正在尝试查找选择的文本开始和结束。所以,在下面的文本中,如果我从“你好,世界!多么美好的一天!”中选择“世界!多么美好”,我应该得到 7 作为开始坐标,24 作为结束坐标,假设 a基于零的索引。
这是如何实现的?
编辑:我正在寻找不在任何<input>
或<textarea>
元素内的文本选择。
编辑:决定使用禁用的解决方案<textarea>s
我正在尝试查找选择的文本开始和结束。所以,在下面的文本中,如果我从“你好,世界!多么美好的一天!”中选择“世界!多么美好”,我应该得到 7 作为开始坐标,24 作为结束坐标,假设 a基于零的索引。
这是如何实现的?
编辑:我正在寻找不在任何<input>
或<textarea>
元素内的文本选择。
编辑:决定使用禁用的解决方案<textarea>s
我用这个:
/* Returns 3 strings, the part before the selection, the part after the selection and the selected part */
function getSelected()
{
var u = editor.val();
var start = editor.get(0).selectionStart;
var end = editor.get(0).selectionEnd;
return [u.substring(0, start), u.substring(end), u.substring(start, end)];
}
编辑器在哪里$("#editor")
或您的文本区域/输入字段可能具有的任何 ID。
用法:
var select = getSelected()
editor.val(select[0] + '<h1>'+ select[2] + '</h1>' + select[1]);
将在 H1 中换行选定的文本。如果未选择任何内容,它只会添加空 H1,但您可以根据自己的喜好添加检查和功能。
** 未在所有浏览器中测试,但可在 Chrome 中使用 **
contenteditable
这是可能的,但对于HTML 内容(与<input>
or<textarea>
元素中的文本相反)稍微复杂一些。这是一个简单的跨浏览器实现:
但我知道一个针对您的问题的 jQuery 插件等等 - https://github.com/localhost/jquery-fieldselection