首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

批改、插入textarea值

2012-10-07 
修改、插入textarea值/** * 替换textarea中的选中的文字 * @param {Object} replaceStr * @return {TypeNam

修改、插入textarea值

/** * 替换textarea中的选中的文字 * @param {Object} replaceStr * @return {TypeName}  */var replaceText = function(replaceStr) {var textarea = top.document.getElementById('content');var rangeData = getCursorPosition(textarea);if (rangeData == null) {return;}var i = rangeData.start;var all = textarea.value;var temp1 = all.substring(0, i);var temp2 = all.substring(i);var temp3 = replaceStr + temp2.substring(rangeData.text.length);textarea.value = temp1 + temp3;}/** * 获取textarea中的选中的文字 * @param {Object} textarea * @return {TypeName}  */var getCursorPosition = function(textarea) {var rangeData = {text : "",start : 0,end : 0};textarea.focus();if (textarea.setSelectionRange) { // W3CrangeData.start = textarea.selectionStart;rangeData.end = textarea.selectionEnd;rangeData.text = (rangeData.start != rangeData.end) ? textarea.value.substring(rangeData.start, rangeData.end) : "";} else if (top.document.selection) { // IEvar i, oS = top.document.selection.createRange(),// Don't: oR = textarea.createTextRange()oR = top.document.body.createTextRange();oR.moveToElementText(textarea);rangeData.text = oS.text;rangeData.bookmark = oS.getBookmark();// object.moveStart(sUnit [, iCount])// Return Value: Integer that returns the number of units moved.for (i = 0; oR.compareEndPoints('StartToStart', oS) < 0&& oS.moveStart("character", -1) !== 0; i++) {// Why? You can alert(textarea.value.length)if (textarea.value.charAt(i) == '\n') {i++;}}rangeData.start = i;rangeData.end = rangeData.text.length + rangeData.start;}if (rangeData.text == ""|| (rangeData.text.length + 2) == textarea.value.length) {return null;} else {return rangeData;}}var ContentCurrentPostion=null; //记录当前位置,如果是IE记录的应该是一个rang范围,firefox则记录的是一个位置值/** * 记录插入位置 * @param {Object} obj */var GetTextAreaPostion = function(obj){         if(document.selection){        obj.focus();        ContentCurrentPostion=document.selection.createRange();     }    else if(obj.selectionStart||obj.selectionStart=='0'){        var startPos=obj.selectionStart;        var endPos=obj.selectionEnd;        ContentCurrentPostion=new Object();        ContentCurrentPostion.startPos=startPos;        ContentCurrentPostion.endPos=endPos;    }    else{        ContentCurrentPostion=null;    }    }/** * 插入值 * @param {Object} value * @param {Object} id */var SetContent = function(value){var str=value;var textarea = top.document.getElementById('content');GetTextAreaPostion(textarea);if(ContentCurrentPostion!=null) {textarea.focus();         if(document.selection) {                       ContentCurrentPostion.text=str;                 }else{            var startPos=ContentCurrentPostion.startPos;            var endPos=ContentCurrentPostion.endPos;                                  textarea.value = textarea.value.substring(0,startPos) + str + textarea.value.substring(endPos,textarea.value.length);         }} else {textarea.value+=str;    }    };

热点排行