2014-04-11 38 views
2

我能夠ONSELECT地記錄和存儲開始得到突出顯示的文字了一個textarea的每一次結束的。然後,當我點擊一個按鈕時,我自己構建子字符串。沒有簡單的查詢選擇的簡單方法嗎?HTML5如何讓所選文本從一個文本

我是種期待會有HTML5的DOM所有這些事情的方法,是這樣的:

textarea.getSelectedStart() textarea.getSelectedEnd(); text1.setSelected(start,end); textArea.setSelected(start,end);

此外,有沒有在一個文本編程取消文本的方法嗎?

我的代碼基於下面的第一個解決方案投入。這種類型的作品,但有一個奇怪的問題:

<script language=javascript> 
function replaceCLOZE(code, questionType) { 
    var v = code.value; 
    var s = code.selectionStart; 
    var e = code.selectionEnd; 
    var t = v.substr(s, e-s); 
    var rep = "{:" + questionType + ":="+t+"}"; 
    code.value = v.substr(0,s) + rep + v.substr(e,v.length-e+1); 
} 

function shortAnswer(code) { 
    replaceCLOZE(code, "SA"); 
} 
function shortAnswerCaseSensitive(code) { 
    replaceCLOZE(code, "SAC"); 
} 
function multipleChoice(code) { 
    replaceCLOZE(code, "MC"); 
} 

文本區域實際上有屬性code.selectionStart和code.selectionEnd。但上面的代碼現在可以工作,將屏幕上突出顯示的文本設置爲textarea中的第一個單詞。請注意,selectionStart仍然正確,但在Firefox中實際突出顯示的內容是錯誤的。

在Chrome中它工作正常。也許這只是Firefox中的一個錯誤,或者是否有其他的東西需要做,以便可視化地正確更新textarea?

回答

2

以下是簡單的方式來獲得的html文本區域的選定文本。仍然不清楚你想要什麼樣的下面的方法,只是會給你提醒選定的文本。

<html><head> 
<script> 
function alertme(){ 
var textarea = document.getElementById("textArea"); 
var selection = (textarea.value).substring(textarea.selectionStart,textarea.selectionEnd); 
alert (selection); 
} 

</script> 

</head> 
<body> 
<p><textarea class="noscrollbars" id="textArea"></textarea></p> 
<button onclick="alertme()">Click me</button> 
</body></html> 

當您選擇文本時,該按鈕會提醒您已選擇的內容。 selectionStart爲您提供了起點和選擇結束點,而子串需要三個參數字符串,起點和終點。

+0

當我在Firefox中嘗試這樣做,它正確地得到selectionStart和結束,但隨後神祕地突出一個字。

相關問題