我需要使用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标签
提前致谢
答案 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)
我认为唯一可行的方法是:
答案 2 :(得分:2)
textarea无法渲染htmltags,你必须隐藏你的textarea并在div或iframe中呈现内容。这是许多所见即所得的编辑使用的技术。 另一种方法是使用contentEditable div