jQuery替换标记文本

6

我将尝试替换元素中特定的高亮(标记)文本。

目前,我是这样获取高亮文本的:

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

如果我在文本区域中有像这样的内容:"apple banana apple orange"并标记第三个单词(苹果),我想要替换我所标记的内容,而不是文本区域中其他任何出现的"apple"。
是否有一种方法可以指定代码应该在字符串中查找替换的起始和结束区域?

我觉得这是一个正则表达式的问题... - ayyp
如果您能找到位置,那么http://www.w3schools.com/jsref/jsref_charat.asp将对您有所帮助。 - Anirudha Gupta
请查看这个问题,它几乎相同:https://dev59.com/1nRB5IYBdhLWcg3wHkLi - Sindre
哦,你的意思是用户在文本区域中选择了文本,而你想要移除这个文本选择。还是我还是错了?哈哈 - epascarello
可能是Textarea Selection的重复问题。 - Hogan
显示剩余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);

我会稍微调整一下,开始或结束字符串可能会有所偏差(我总是搞砸 :/ ),但这应该可以做到你想要的。


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

我个人认为你的答案比我的好。更加简洁,而且作为一个函数可以更容易地管理。干得好! - Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接