Javascript在textarea中选择一个句子

时间:2010-03-12 09:06:34

标签: javascript textarea

我在想是否有办法使用javascript从文本区域中选择任意一个句子,只需点击该句子中的任何位置即可。

我正在思考 - 首先,获取当前光标位置(我知道如何) - 第二,以某种方式找到前一个fullstop和下一个fullstop的位置(如何?) - 获取两个完整停靠点内的任何内容。 (工作原理)

或者有一种简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

我假设您已经知道处理插入位置并获取插入符号之前/之后的内容,因此这是一个伪代码解决方案:

  • 用户点击textarea
  • 获取当前的插入位置
  • 将所有内容存储在变量A
  • 中的插入位置之前
  • 将插入符号位置后的所有内容存储在变量B
  • 使用lastIndexOf()
  • 在A中查找上一个句号的位置
  • 使用indexOf()
  • 在B中查找第一个句号的位置
  • 处理未找到完全停止的情况
    • 在A
    • 的情况下将位置设置为0
    • B的情况下字符串的结尾
  • 从A
  • 获取子字符串(last_pos,end_pos)
  • 从B
  • 获取子字符串(0,first_pos)
  • 合并子串。

答案 1 :(得分:0)

在其他人回应之前,我开始研究这个问题,因为我对它很感兴趣。这就是我的工作。您可以将您的工作基于此并纳入其他建议:

<html>
<script type="text/javascript">
function getsentence(){
 var ta = document.getElementById("ta");
 var cursor = ta.selectionStart;
 var text = ta.value;

 //Find the beginning
 var start;
 for(var i = cursor; i > 0; i--){
  if(text.charAt(i) === "."){
   start = i+2;
   break;
  }
  start = 0;
 }

 //Find end
 var end;
 for(var i = cursor; i < text.length; i++){
  if(text.charAt(i) === "."){
   end = i+1;
   break;
  }
  end = text.length;
 }
 alert(text.substring(start, end));
}
</script>
<body>
<textarea id="ta" rows="10" cols="50" onclick="getsentence()">
This is a sample. Here is sentence two. Here is sentence three. And now on to number four.
</textarea>
</body>
</html>