/** * 替换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) { // W3C rangeData.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) { // IE var 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; } };
详细解决方案
批改、插入textarea值
热度:230 发布时间:2012-10-07 17:28:51.0
相关解决方案
- js中如何控制添加到<textarea>中文字的颜色呢
- <textarea> 自动换行写入数据 读出的数据怎么自动换行
- struts2如何把从一个页面查询到的数据赋值给另一个页面的<s:textarea 文本框>
- <textarea>文本变换
- asp.net 2.0裡面的 TextArea 回車換行問題,该怎么处理
- textarea,设置wrap为hard,如何用javascript取得其中的自动换行符
- 找不到类型或命名空间名称 TEXTAREA (是否缺少 using 指令或程序集引用?)解决思路
- 兄弟们帮小弟我一下在当在<textarea> 存在 </textarea> 的时候怎么办
- textarea 的显示问题
- textArea.getDocument().addUndoableEditListener疑问
- textArea 问题
- java TextArea 中如何确定光标相对于本窗体原点的坐标值(像素值)
- 纠正一上 TEXTAREA 的有关问题.
- dreamweaver中<textarea>这个标签的这个wrap= VIRTUAL是什么意思?该怎么处理
- 急求:ASP textarea 繁体输入显示有关问题
- 为何<textarea>四周边框的颜色不一致
- 关于怎样禁止<textarea>在chrome等浏览器中允许拖动改变大小的有关问题
- 怎么控制<textarea></textarea>的最大输入字符数
- 怎么定义document.form.textarea
- textarea 右对齐,换行后产生的有关问题
- textarea 字符转换有关问题
- input textarea 题目居中显示
- textarea 固定大小跟禁止拖动
- textarea 整合案例
- textarea 滚动条属性设立
- <s:textarea 标签不能改变大小疑点的解决方案
- 美化<textarea>只需两步!
- textarea 标签中包孕的字符串中含有<textarea></textarea>字符串需要转义
- textArea 滚动条统制
- textarea 限制篇幅数,并提示