6

特定の強調表示された (マークされた) テキストを要素から置き換えようとしています。

これまでのところ、強調表示されたテキストを取得する方法は次のとおりです。

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

したがって、テキストエリアに「リンゴ バナナ リンゴ オレンジ」のようなものがあり、3 番目の単語 (リンゴ) をマークすると、テキストエリアに「リンゴ」が他に出現することなく、マークしたものを正確に置き換えたいとします。

コードが文字列内の置換を探す必要がある開始領域と終了領域を指定する方法はありますか?

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 に答える