突出显示TextArea中的特定文本

时间:2011-09-20 13:28:30

标签: javascript html

我需要使用javascript在我的网页中模拟查找和替换功能,无论是查找还是替换,但问题是如何在替换之前突出显示textArea中匹配的搜索结果。 我尝试用Bold Tag替换匹配的结果,但它不起作用,因为textArea不理解HTML标记。

我使用了以下代码:

function findMyText(searchTxt) {

 var textAreaTxt = "";

 textAreaTxt = document.getElementById("myTxtAreaID").value;
 var match = new RegExp(searchTxt, "ig");     
 var boldText = '<B>' + searchTxt+ '<\/B>';
 var replaced = textAreaTxt .replace(match, boldText);

 document.getElementById("myTxtAreaID").value= replaced;
}

有没有其他方法可以在textArea中突出显示搜索结果,或者如何使textArea理解HTML标签

提前致谢

3 个答案:

答案 0 :(得分:9)

t = document.getElementById("myTxtAreaID");
l = t.value.indexOf(searchText);
if(l!=-1){
t.selectionStart = l;
t.selectionEnd = l+searchText.length
}

该代码的作用是找到找到的文本的开头,并为textarea设置selectionStart和selectionEnd值。这只是选择文本,就像用户自己选择了文本一样。工作demo here

答案 1 :(得分:3)

我认为唯一可行的方法是:

  • 使用javascript画布绘制突出显示textarea中的文本(我觉得这很复杂)
  • 使用“假”textarea,使用iframe构建,就像什么是wysiwyg编辑(ckeditor,tinymce,..)做

答案 2 :(得分:2)

textarea无法渲染htmltags,你必须隐藏你的textarea并在div或iframe中呈现内容。这是许多所见即所得的编辑使用的技术。 另一种方法是使用contentEditable div