选中textarea特定范围的内容(该textarea已被focused):
IE9以上浏览器:
textarea.focus();
textarea.setSelectionRange(rangeData.start, rangeData.end, [optional] selectionDirection)
IE9及以下:
textarea.focus();
var range = textarea.createTextRange();
range.moveStart("character", rangeData.startDev); // 偏移量
range.moveEnd("character", rangeData.endDev);
range.collapse(false); //强制光标移动到结束位置
range.select(); //选择范围内文本
获取textarea选中范围的起始位置及内容:
IE9以上浏览器:
textarea.focus();
rangeData.start = textarea.selectionStart;
rangeData.end = textarea.selectionEnd;
rangeData.text = (rangeData.start != rangeData.end) ? textarea.value.substring(rangeData.start, rangeData.end) : "";
IE9及以下:
textarea.focus();
var i,
oS = document.selection.createRange(),
// 为了使 oR 与 oS 在同一等级上比较 Don't: oR = textarea.createTextRange()
oR = document.body.createTextRange();
// 移动文本范围以便范围的开始和结束位置能够完全包含给定元素的文本
// 移动body的范围,使其范围的开始和结束位置包含textarea的整个文本
oR.moveToElementText(textarea);
rangeData.text = oS.text;
// 比较textarea的文本开始位置与当前选中范围的开始位置,不断先去移动开始位置,直至到达文本开始位置
for (i = 0; oR.compareEndPoints('StartToStart', oS) < 0 && oS.moveStart("character", -1) !== 0; i++) {
// IE下回车也会占到一个字符
if (textarea.value.charAt(i) == '\r') {
i++;
}
}
rangeData.start = i;
rangeData.end = rangeData.text.length + rangeData.start;
向textarea指定位置添加文本:
// 当textarea选中文本时,添加的文本替换当前选中文本
// textarea未选中时,文本插入到光标位置(start与end相同)
this.set(textarea, rangeData); // 选中textarea特定范围的内容
IE9以上浏览器:
oValue = textarea.value;
nValue = oValue.substring(0, rangeData.start) + text + oValue.substring(rangeDat