textarea实现输入账号回车添加;删除时选中整个账号的效果

选中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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值