查找文本区域中插入符号的位置(以像素为单位)
Find caret position in textarea in pixels
我想知道是否可以找到文本区域内插入符号相对于整个页面的确切位置(以像素为单位)。例如,如果我在文本框中键入了This is text
,我想知道从屏幕左上角到插入符号的像素。
它的形式是X:200 Y:100。这样我就可以定位一个浮动div。这需要在javascript中动态完成。
谢谢各位
这个"原始代码"至少在IE中有效。
使用该代码,您可以将<TEXTAREA>
放在页面中任何您想要的位置,<DIV id="db">
也会跟随它。即使页面的滚动位置不同。您可以通过更改d.style...6
-语句中的文字数字来固定<DIV>
的位置。
<body>
<div id="db" style="position:absolute;left:-20px;top:-20px;border:1px solid red;">V</div>
<br><br><br>
<form id="props">
<textarea id="ta" style="width:200px;height:100px;" onkeyup="moveDiv();"></textarea>
</form>
<script>
<!--
var b=document.body;
var d=document.getElementById('db');
var a=document.getElementById('ta');
function moveDiv(){
var sel=document.selection;
var targ=sel.createRange();
d.style.top=a.offsetTop+a.clientTop-d.clientHeight-6;
d.style.left=targ.offsetLeft+b.scrollLeft-6;
return;
}
// -->
</script>
</body>
<DIV>
的定位不太准确,但在<TEXTAREA>
中使用固定宽度字体会更好。
这里有一个简单的想法组合,来自输入类型文本(而不是文本区域)中以像素为单位的插入符号位置、文本区域中以字符为单位的输入符号位置和document.getElementById vs jQuery$(),以获取<input>
元素在jQuery中的插入符号。它在内部单击时有效,但在使用箭头移动插入符号或键入时无效。
<input id="someid">
<span id="faux" style="display:none"></span><br/>
<script>
var inputter = $('#someid')[0];
var faux = $('#faux');
function getCaret(el) {
if (el.selectionStart) {
return el.selectionStart;
} else if (document.selection) {
el.focus();
var r = document.selection.createRange();
if (r == null) {
return 0;
}
var re = el.createTextRange(),
rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
return rc.text.length;
}
return 0;
}
$("#someid").click( function( event ) {
caretpos = getCaret(inputter);
calcfaux = faux.text($(this).val().substring(0, caretpos));
fauxpos = calcfaux.outerWidth();
$("#getpx").text(fauxpos + " px");
});
</script>
我们使用var inputter = $('#someid')[0];
而不是var inputter = document.getElementById('someid')
这是一个FIDDLE。
相关文章:
- 获取以屏幕像素为单位的旋转SVG元素的边界
- GridStack项的高度和宽度(以像素为单位)
- 远距离变换元素的宽度/高度(以像素为单位)
- 以非像素为单位获取HTML DOM元素的CSS高度,在我的例子中是英寸
- .height() 以百分比返回高度,如何以像素为单位获取它
- 如何从顶部获取窗口位置(以像素为单位)
- 以像素为单位获取整个页面的高度
- 获取返回的数据表的大小(以像素为单位)
- 裁剪后的图像大于 coppit.js 中以像素为单位的内在大小
- 如何查找可滚动页面的垂直长度(以像素为单位)
- 使用 snap SVG,如何以像素为单位计算 SVG 文件的整个路径
- 为什么我的圆圈不会以“像素”为单位显示
- jQuery滚动事件:如何确定滚动量(滚动增量),以像素为单位
- 如何获得以像素为单位的上传图像分辨率?(上传前)
- 使用RaphaelJS将路径缩放为纸张大小或以像素为单位设置路径尺寸
- jQuery获取以像素为单位的高度
- 如何使用JavaScript或jQuery获得以像素为单位的文本宽度
- 使用javascript确定图像大小(以像素为单位)
- OpenLayers以像素为单位
- Javascript mobile-根据屏幕尺寸以像素为单位计算元素尺寸