js获取光标位置例子
<html>
<head>
<title>TEST</title>
<style>
body,td {
font-family: verdana, arial, helvetica, sans-serif;
font-size: 12px;
}
</style>
<script type="text/javascript">
var start = 0;
var end = 0;
function add() {
var textBox = document.getElementById("ta");
var pre = textBox.value.substr(0, start);
var post = textBox.value.substr(end);
textBox.value = pre + document.getElementById("inputtext").value + post;
}
function savePos(textBox) {
//如果是Firefox(1.5)的话,方法很简单
if (typeof (textBox.selectionStart) == "number") {
start = textBox.selectionStart;
end = textBox.selectionEnd;
}
//下面是IE(6.0)的方法,麻烦得很,还要计算上'\n'
else if (document.selection) {
var range = document.selection.createRange();
if (range.parentElement().id == textBox.id) {
// create a selection of the whole textarea
var range_all = document.body.createTextRange();
range_all.moveToElementText(textBox);
//两个range,一个是已经选择的text(range),一个是整个textarea(range_all)
//range_all.compareEndPoints()比较两个端点,如果range_all比range更往左(further to the left),则 //返回小于0的值,则range_all往右移一点,直到两个range的start相同。
// calculate selection start point by moving beginning of range_all to beginning of range
for (start = 0; range_all.compareEndPoints("StartToStart",range) < 0; start++){
range_all.moveStart('character', 1);
}
// get number of line breaks from textarea start to selection start and add them to start
// 计算一下\n
for ( var i = 0; i <= start; i++) {
if (textBox.value.charAt(i) == '\n')
start++;
}
// create a selection of the whole textarea
var range_all = document.body.createTextRange();
range_all.moveToElementText(textBox);
// calculate selection end point by moving beginning of range_all to end of range
for (end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; end++)
range_all.moveStart('character', 1);
// get number of line breaks from textarea start to selection end and add them to end
for ( var i = 0; i <= end; i++) {
if (textBox.value.charAt(i) == '\n')
end++;
}
}
}
document.getElementById("startId").value = start;
document.getElementById("endId").value = end;
}
</script>
</head>
<body>
<form action="a.cgi">
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td>start: <input type="text" id="startId" size="3" /></td>
<td>end: <input type="text" id="endId" size="3" /></td>
</tr>
<tr>
<td colspan="2"><textarea id="ta" onKeydown="savePos(this)"
onKeyup="savePos(this)" onmousedown="savePos(this)"
onmouseup="savePos(this)" onfocus="savePos(this)" rows="14"
cols="50"></textarea></td>
</tr>
<tr>
<td><input type="text" id="inputtext" /></td>
<td><input type="button" onClick="add()" value="Add Text" /></td>
</tr>
</table>
</form>
</body>
</html>
js获取光标位置例子的更多相关文章
- js获取光标位置
js获取光标位置 var TT = { /* * 获取光标位置 * @Method getCursorPosition * @param t element * @return number */ ...
- js获取光标位置并插入内容
先来几个网上找的参考资源,我爱互联网,互联网使我变得更加强大. https://blog.csdn.net/mafan121/article/details/78519348 详细篇,该作者很用心的解 ...
- android EditText获取光标位置并安插字符删除字符
android EditText获取光标位置并插入字符删除字符1.获取光标位置int index = editText.getSelectionStart(); 2.在光标处插入字符int index ...
- Android EditText获取光标位置并插入字符删除字符
1.获取光标位置 int index = editText.getSelectionStart(); 2.在光标处插入字符 int index = editText.getSelectionStart ...
- 【全面总结】js获取元素位置大小
[js获取元素位置+元素大小]全面总结 目录 1.关于offset offsetParent(只读) offsetTop(只读) offsetLeft(只读) offsetHeight(只读) off ...
- js获取元素位置和style的兼容性写法
今天说一下js获取元素位置和style的方法.当然不只是element.style那么简单.. 主角:getBoundingClientRect,getClientRects,getComputedS ...
- 可编辑div中包含子元素时获取光标位置不准确的问题
前言: 高亮显示输入框中的关键字符,这就必须得用到可编辑div(或其他标签)元素了,这时我们需要获取光标的位置,以便插入字符. 正文: 正常情况下获取光标位置,代码如下: function getPo ...
- js 在光标位置插入内容
原文:https://blog.csdn.net/smartsmile2012/article/details/53642082 createDocumentFragment()用法: https:/ ...
- 文本框获取光标位置 ---- ctrl+enter换行
业务需求:按下enter键发送信息,按下ctrl+enter键换行 下面代码是网上找的资料 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T ...
随机推荐
- 基于kryonet的RPC,使用kryo进行序列化
Kryo是一个序列化框架. Kryonet是一个基于kryo的RPC框架,它实现了一套高效简洁的API,它通过NIO实现了TCP和UDP通讯,目前还不支持Http. 自己写了一个测试代码,运行了下,感 ...
- visual studio 2012 update3
http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=39305
- mongo客户端mongo VUE增删改查
一.先创建一张mongo表,右击已创建的数据库test,点击addcollection.. 输入Collection Name,点击ok: 二.在创建的表中新增列与数据,右击表选择Insert doc ...
- HDU 5694 BD String 递归暴力
http://blog.csdn.net/angon823/article/details/51484906 #include <cstdio> #include <iostream ...
- 021QTP之焦点(多思考)
一.什么是焦点: 焦点说白了就是你打开某一个程序时默认的focuse 比如我们那QTP自带的windows下的示例程序来说,启动它后焦点自动落在了agent name文本框上 二.利用Tab键检查焦点 ...
- 富文本HTML编辑器UEditor
Baidu百度开源富文本HTML编辑器UEditor JS代码网 发表于: 2013-10-30 分类:HTML编辑器 点击:2133 UEditor是由百度web前端研发部开发所见即所得富文本H ...
- Cppcheck代码分析(2)
功能 解析函数中的可能的代码执行流 函数实际执行中只会执行代码流中的一条流 分析: 分支语句 if-else ,switch-case 循环语句 while, do-while ,for 代码流举例 ...
- 恒天云技术分享系列3 – KVM性能调优
恒天云技术分享:http://www.hengtianyun.com/download-show-id-11.html KVM是什么 KVM 是 kernel-based Virtual Machin ...
- Jquery Form表单元素对象化
function serializeObject(form){ var o = {}; $.each(form.serializeArray(),function(index){ o[this['na ...
- light oj 1214 - Large Division
1214 - Large Division PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 32 MB G ...