如何在Javascript中找到选择文本的开头和结尾位置?

时间:2011-12-17 05:10:27

标签: javascript jquery html selection getselection

我正在尝试找到选择的文本开头和结尾。所以,在下面的文字中,如果我从“Hello,world!这是多么美好的一天!”中选择“世界!真是太好了”,我应该得到7作为起始坐标,24作为结束坐标假设一个基于零的指数。

这是如何实现的?

编辑: 我希望找到不在任何<input><textarea>元素中的文本选择。

编辑: 决定使用已禁用的解决方案<textarea>s

3 个答案:

答案 0 :(得分:2)

我用这个:

/* 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")或您的textarea /输入字段可能具有的任何ID。

用法:

var select = getSelected()
editor.val(select[0] + '<h1>'+ select[2] + '</h1>' + select[1]);

将在H1中包装所选文本。如果没有选择任何内容,它只会添加空H1,但您可以根据自己的喜好添加检查和功能。

**未在所有浏览器中测试过,但在Chrome浏览器中使用**

答案 1 :(得分:2)

这可能会因contenteditable HTML内容而略显复杂(与<input><textarea>元素中的文字相对)。这是一个简单的跨浏览器实现:

https://stackoverflow.com/a/4812022/96100

答案 2 :(得分:0)

但我知道一个针对您的问题的jQuery插件 - https://github.com/localhost/jquery-fieldselection