2012-07-09 63 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