6

我正在尝试替换元素中特定的突出显示(标记)文本。

到目前为止,这就是我获得突出显示的文本的方式:

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

因此,如果我在 textarea 中有这样的内容:“applebanana apple orange”并标记第三个单词(apple),我想完全替换我标记的内容,而不在 textarea 中出现任何其他“apple”。

有没有办法指定代码应该在字符串中寻找替换的开始和结束区域?

4

2 回答 2

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);

我会玩这个,它可能会在 startStr 或 endStr 上偏离 1 (我总是把它搞砸:/ )但这应该做你想做的事情。

于 2012-07-09T17:07:24.720 回答
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");
于 2012-07-09T17:14:49.757 回答