input、textarea 输入框------光标操作、指定光标位置插入内容

1、光标处插入指定内容,并移动光标到相应位置
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>JS在文本域鼠标指定位置插入文本</title>
		<script type="text/javascript">
			function insertAtCursor(myField, myValue) {
				//IE support
				if(document.selection) {
					myField.focus();
					sel = document.selection.createRange();
					sel.text = myValue;
					sel.select();
				}
				//MOZILLA/NETSCAPE support 
				else if(myField.selectionStart || myField.selectionStart == '0') {
					var startPos = myField.selectionStart;
					var endPos = myField.selectionEnd;
					// save scrollTop before insert www.keleyi.com
					var restoreTop = myField.scrollTop;
					myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
					if(restoreTop > 0) {
						myField.scrollTop = restoreTop;
					}
					myField.focus();
					myField.selectionStart = startPos + myValue.length;
					myField.selectionEnd = startPos + myValue.length;
				} else {
					myField.value += myValue;
					myField.focus();
				}
			}
		</script>
	</head>

	<body>
		<div style="width:500px;margin-left:auto;margin-right:auto;margin-top:100px;">
			<textarea id="keleyi_com" style="width:340px; height:180px"> 柯乐义 Javascript 在textarea光标处插入文本</textarea>
			<input type="button" onclick="insertAtCursor(document.getElementById('keleyi_com'),'www.keleyi.com')" value="插入文本" />
		</div>
	</body>
</html>

参考链接 :https://www.cnblogs.com/jihua/archive/2013/03/21/2974534.html

2、获取当前光标所在位置
//第一步,获取输入框对象
var inputDom = document.getElementsByTagName('input')[0] ; 
//第二步,获取光标的开始位置与结束位置
var startPos = inputDom.selectionStart,
    endPos = inputDom.selectionEnd;

注意: 如果是拖选的区域,则光标selectionStart与selectionEnd不相等,
如果是 输入类型的光标(|),则selectionStart与selectionEnd相等。

3、指定光标位置,或者选中指定区域的内容setSelectionRange
3.1、移动光标到指定位置
/*
* ctr: input/textarea输入框的dom对象,
* pos: 光标指定的位置,类型为Number。
*/
function setCaretPosition(ctrl, pos){
	if(ctrl.setSelectionRange){
		ctrl.focus();
		ctrl.setSelectionRange(pos,pos);
	}else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}
3.2、默认选中指定区域的文本
<input type="text" id="text-box" size="20" value="Mozilla">
<button onclick="selectText()">Select text</button>

function selectText() {
  const input = document.getElementById('text-box');  
  input.focus();
  input.setSelectionRange(2, 5);
}

结果如下:
在这里插入图片描述

4、插入文本换行
  • 换行字符\n\n -----》

字符串添加“\n”字符,浏览器解析时自动换行,注意必须是双引号,查看在对象中相应字符串的显示时,字符串\n显示为↵,实际不是\n。

-在这里插入图片描述

参考链接1:https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLInputElement/setSelectionRange
参考链接2:https://www.webhek.com/post/javascript-get-pointer-position.html
参考链接3:https://www.cnblogs.com/jiqing9006/p/6510114.html
参考链接4:https://www.cnblogs.com/yoyiorlee/archive/2011/04/04/2005213.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值