`
kingmxj
  • 浏览: 176847 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

修改、插入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) { // 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;
    }    
};
分享到:
评论

相关推荐

    wc-editor:一个编辑器Web组件,它报告其值的特定更改

    唯一可见的元素是插入符号和选择(如果有)。 编辑器的内容由位于其下方的div呈现,并且其跨度可以上色并格式化为粗体,斜体,下划线,删除线等。 原生行为 由于输入以及键盘和鼠标的处理均使用本机textarea ,...

    FCKeditor使用指南

    3.1.2 方法二:替换页面中的Textarea 5 3.1.3 方法三:适合于Ajax的调用方法 6 3.1.4 Js中FCKeditor对象的属性(集合)和方法 6 3.1.4.1 属性 6 3.1.4.2 集合 7 3.1.4.3 方法 7 3.1.5 FCKeditor的JS构造器 9 3.1.6 将...

    waveGeneral:音频解析标注框架

    #https 2018-01-23质检框赋值质检不可以修改标注框标明判断合格不合格状态不能修改判断统计值添加文字统计值2018-01-08音频封闭删除保存问题音频验证样音播放样音保存统计变更无效原因快捷符号插入数据保存2018-01-...

    xheditor-1.1.14

    说明:count和list必需选其中一个值,注意count模式插入表情img的alt为空 备注:1.0.0 beta2新添加 hoverExecDelay:悬停自动执行延迟的时间 参数:数值(单位毫秒),默认为100,设置为-1关闭此功能 备注:1.0.0 rc2...

    fckeditor2.6.3 完整版

    这个集合用于更改配置中某一项的值,如 oFckeditor.Config["DefaultLanguage"]="pt-br"; 方法: Create() 建立并输出编辑器 RepaceTextArea(TextAreaName) 用编辑器来替换对应的文本框 如何配置FCKEDITOR? ...

    JavaScript经典实例

     1.9处理textarea的单个行  1.10去除字符串末尾的空白  1.11左补充或右补充一个字符串  第2章使用正则表达式  2.0简介  2.1测试一个子字符串是否存在  2.2测试不区分大小写的子字符串匹配  2.3验证社会安全...

    《程序天下:JavaScript实例自学手册》光盘源码

    3.30 分行取textarea中的值 3.31 自动插入文本 3.32 选取textarea的指定行 3.33 文本放大镜 3.34 文本框的默认输入法 3.35 文本框显示网页中选中的内容 3.36 文字的垂直滚动 3.37 文字幻灯片 3.38 随机动态文字效果 ...

    程序天下:JavaScript实例自学手册

    3.30 分行取textarea中的值 3.31 自动插入文本 3.32 选取textarea的指定行 3.33 文本放大镜 3.34 文本框的默认输入法 3.35 文本框显示网页中选中的内容 3.36 文字的垂直滚动 3.37 文字幻灯片 3.38 随机动态文字效果 ...

    xheditor v1.0.0 rc2 build 100401

    调整:API函数setSource由原先的延迟写入,修改为立即写入 调整:更换为更完善的IE光标丢失问题解决方案 调整:为兼容w3c标准,原xheditor专有属性初始化模式,变更为直接在class中写参数,例:class="xheditor {...

    大名鼎鼎SWFUpload- Flash+JS 上传

     动态修改SWFUpload初始化设置中的post_params属性,其中所有的值都将被覆盖。  - 参数  param_object:一个simple JavaScript object,所有的name/value都必须是字符串,例如(this.setPostParams({ "Mari": name...

    xhEditor编辑器 v0.9.7 简体中文

    7.修正:之前表情插入后默认是选中当前表情,现修正为插入表情后光标定位在表情之后,这样便于在后面继续插入新表情 8.添加:ajax上传功能模块化,使链接、动画和视频在不增加代码大小的情况下都具备上传功能 9....

    精通AngularJS part1

    使用基于文本的输入(text、textarea、e—mail、URL、number)143 使用checkbox输入144 使用radio输入145 使用select输入145 提供简单的字符串options145 利用ngOptions指令提供动态options146 select指令与空...

    fckedit编辑器

    修改合并后的web.xml文件,将名为SimpleUploader的Servlet的enabled参数值改为true, 以允许上传功能,Connector Servlet的baseDir参数值用于设置上传文件存放的位置 在web.xml最后添加标签定义: &lt;taglib-uri&gt;...

    java 正则表达式

    屏蔽关键字(sex , fuck) - 已修改&lt;script language="JavaScript1.2"&gt;function test() {if((a.b.value.indexOf ("sex") == 0)||(a.b.value.indexOf ("fuck") == 0)){ alert("五讲四美三热爱"); a.b.focus(); return ...

    ZendFramework中文文档

    11.1. 输出变量的值 (Dumping Variables) 12. Zend_Exception 12.1. 使用“异常” 13. Zend_Feed 13.1. 介绍 13.2. 导入Feeds 13.2.1. 定制 feeds 13.2.1.1. 导入定制的数组 13.2.1.2. 导入定制的数据源 ...

    php网络开发完全手册

    11.1.5 多行文本域标签textarea 171 11.1.6 下拉框与列表框标签select 172 11.2 表单数据的接收 173 11.2.1 GET方法 173 11.2.2 POST方法 176 11.3 常用表单数据的验证方法 177 11.3.1 姓名验证 177 11.3.2 日期验证...

    js使用小技巧

    Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type ... 捕获释放 event.srcElement.setCapture();...event.srcElement.releaseCapture();... 根据鼠标获得元素: document....

Global site tag (gtag.js) - Google Analytics