我正在尝试在“Textarea”中突出显示一段文字。 我在TextArea中有一个长字符串:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident
我有一个函数可以提取“begin”和“end”vars之间的第一个字符串。例如:
extract("ipsum", "consectetur") // This will give: "dolor sit amet,"
但是,我想要的是选择函数的结果,以便突出显示结果字符串“dolor sit amet”。
有可能吗? 我怎么能这样做?
谢谢,
问候。
答案 0 :(得分:4)
这里有一些代码可以在所有主流浏览器中选择textarea中的一系列文本,包括IE 6 +:
function offsetToRangeCharacterMove(el, offset) {
return offset - (el.value.slice(0, offset).split("\r\n").length - 1);
}
function setSelection(el, start, end) {
if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") {
el.selectionStart = start;
el.selectionEnd = end;
} else if (typeof el.createTextRange != "undefined") {
var range = el.createTextRange();
var startCharMove = offsetToRangeCharacterMove(el, start);
range.collapse(true);
if (start == end) {
range.move("character", startCharMove);
} else {
range.moveEnd("character", offsetToRangeCharacterMove(el, end));
range.moveStart("character", startCharMove);
}
range.select();
}
}
var textarea = document.getElementById("your_textarea");
var val = textarea.value;
var start = val.indexOf("ipsum") + 5, end = val.indexOf("consectetur");
setSelection(textarea, start, end);
答案 1 :(得分:2)
我记得刚才看到这个...... http://www.din.or.jp/~hagi3/JavaScript/JSTips/Mozilla/Samples/NSHTMLTextAreaElement.htm
它相当复杂,我永远不会为了绕过它而烦恼。 Dunno,如果这是你需要的,或者你可以使用它。 :)
答案 2 :(得分:2)
您无法在文本区域中突出显示文本的不同部分。您可以选择零件而不是多个零件,选择不突出显示。您可以获取textarea的内容,但它可以是<div>
,并使用<span class="highlight">...</span>