我想知道是否可以在文本区域内找到插入符号的确切位置,以像素为单位相对于整个页面。例如,如果我在This is text
文本框中输入了内容,我想知道从屏幕左上角到插入符号的像素。
它将采用 X:200 Y:100 的形式。这样我就可以定位一个浮动 div。这需要在javascript中动态完成。
多谢你们
我想知道是否可以在文本区域内找到插入符号的确切位置,以像素为单位相对于整个页面。例如,如果我在This is text
文本框中输入了内容,我想知道从屏幕左上角到插入符号的像素。
它将采用 X:200 Y:100 的形式。这样我就可以定位一个浮动 div。这需要在javascript中动态完成。
多谢你们
这个“原始代码”至少在 IE 中有效。
使用代码,您可以将您的<TEXTAREA>
任何您想要的页面放在页面中,并且<DIV id="db">
会跟随它。即使页面的滚动位置。您可以<DIV>
通过更改d.style...6
-statements 处的文字数字来固定 的位置。
<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 与 jQuery $()的简单组合,以获取 jQuery 中的插入符号位置一个<input>
元素。在其中单击时它有效,但在使用箭头或键入移动插入符号时无效。
<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 = document.getElementById('someid')
我们使用var inputter = $('#someid')[0];
这是一个FIDDLE。