2012-07-09 53 views
6

我試圖用元素替換特定的高亮(標記)文本。jQuery替換標記的文本

這是我如何得到突出顯示的文本至今:

var markArea = $('.ElementText textarea').get(0); 
var text  = markArea.value.substring(markArea.selectionStart, markArea.selectionEnd);

所以,如果我有textarea的是這樣的:「蘋果香蕉蘋果橙」,並迎來第三字(蘋果)我想正確地替換我在textarea中沒有發現任何其他「apple」的標記。

有沒有辦法指定代碼應該在字符串中尋找替換的開始和結束區域?

+0

我覺得這是一個正則表達式的事情。 .. – 2012-07-09 16:56:36

+0

@安德魯,你在搖擺。您在一分鐘內編輯了問題。非常好的 – Adrian 2012-07-09 16:56:39

+0

如果你可以找到的位置,那麼http://www.w3schools.com/jsref/jsref_charat.asp將在你的情況下有用。 – Adrian 2012-07-09 16:58:48

回答

5

你可以嘗試這樣的事情,

var markArea = $('.ElementText textarea').get(0); 
var startStr = markArea.value.substring(0,markArea.selectionStart); 
var endStr = markArea.value.substring(markArea.selectionEnd); 
var text  = startStr +"REPLACEMENT VALUE HERE"+ endStr;  
$('.ElementText textarea').val(text); 

我這個一點則可能是由1對任一startStr或endStr(我總是一團糟,高達:/)熄滅發揮,但這個應該做你想做的事情。

+0

是的,這正是我一直在尋找!感謝您的時間! – Zhivko 2012-07-09 17:12:13

+0

np。樂意效勞。 :) – Dan 2012-07-09 17:28:54

3

上面的回答之前寫到這,但我會保持它,因爲它是寫代碼的只是用不同的方式/不使用jQuery:

function replaceAtIndex(str,s,e,rep){ 
    return str.slice(0,s) + rep + str.slice(e); 
} 

markArea.value = replaceAtIndex(markArea.value,markArea.selectionStart,markArea.selectionEnd,"replacement"); 
+0

個人認爲你的答案比我的更好。更清潔和作爲一個功能,它可以更容易地管理。 gj – Dan 2012-07-09 17:30:48

+0

這也是非常整潔的解決方案。謝謝! – Zhivko 2012-07-10 07:14:06