2010-03-12 53 views
1

我想如果有一種方法可以通過點擊文本中的任何位置來從textarea中選取任何一個句子。Javascript在textarea中選擇一個句子

我沿着 的思路 - 首先,獲得當前光標位置(我知道如何) - 第二,莫名其妙地找到以前的句點的位置和下一個句號 (如何?) - 採取一切內容在兩個fullstops內。 (怎麼樣?)

或者有一個簡單的方法來做到這一點?

回答

2

我假設你已經知道有關處理插入位置之前獲取內容/插入符之後,所以這裏是一個僞代碼的解決方案:

  • 用戶點擊文本區域
  • 獲取當前光標處
  • 商店變量A中的光標位置前的所有內容
  • 變量B中的光標位置後存儲所有內容
  • 使用查找A中最後一個句點的位置使用indexOf()
  • 處理這種情況)在乙第一句號
  • 查找位置句號未找到
    • 設定位置爲0串的
    • 端的情況下,在B的情況下
    • 從乙
  • 採取子串從A
  • 採取子(last_pos,end_pos)(0,first_pos)
  • 結合子串。
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>