如何从输入字段中获取插入位置?
我通过谷歌发现了一些零碎的东西,但没有任何防弹措施.
基本上像jQuery插件这样的东西是理想的,所以我可以简单地做
$("#myinput").caretPosition()
Run Code Online (Sandbox Code Playgroud) 我在HTML页面上有一个div,每当我按下鼠标并移动它时,它会显示"不能掉落"光标,就像选择一些东西一样.有没有办法禁用选择?我试过CSS用户选择没有成功.
我正在使用jQuery并试图找到一种跨浏览器的方式来获取插入符号<textarea>和input盒子中的插入符号,这样我就可以在这个位置放置一个绝对定位的div.
有一些jQuery插件吗?或者JavaScript代码片段就是这么做的?
IE允许我在输入元素中创建一个文本范围,我可以在其上调用getBoundingClientRect()并获取某个字符或光标/插入符号的像素位置.有没有办法在其他浏览器中以像素为单位获取某个角色的位置?
var input = $("#myInput")[0];
var pixelPosition = null;
if (input.createTextRange)
{
var range = input.createTextRange();
range.moveStart("character", 6);
pixelPosition = range.getBoundingClientRect();
}
else
{
// Is there any way to create a range on an input's value?
}
Run Code Online (Sandbox Code Playgroud)
我正在使用jQuery,但我怀疑它能否解决我的问题.我期待一个纯JavaScript解决方案,如果有的话,但欢迎jQuery的答案.
我想div在一个iframewith contentEditable中放置一个浮动元素,以防用户输入某个组合键(用于自动完成目的).
我知道如何获得插入位置:
document.getElementById('elm1_ifr').contentWindow.getSelection().anchorOffset
我可以用它来计算leftdiv 的属性,但我似乎无法弄清楚如何获得top.
我想到的另一种可能性是使用:
document.getElementById('elm1_ifr').contentWindow.getSelection().anchorNode.parentNode
并使用jQuery获取偏移量,但如果该父项具有长文本行,我将只能提取第一行的顶部位置.
谁能帮我这个?
我想知道是否有可能在整个页面中找到textarea中的carret的确切位置(以像素为单位).例如,如果我输入This is text了我的文本框,我想知道从屏幕左上角到carot的像素.
它将采用X:200 Y:100的形式.这样我就可以定位浮动div.这需要在javascript中动态完成.
多谢你们
我正在使用jquery-ui的Autocomplete.在多个值中,您可以获得空格后每个单词的下拉列表,但下拉列表显示为输入框的大小.是否有可能使下拉列表出现在每个光标下方,其宽度等于下拉字而不是输入框的整个长度?
编辑:示例(类似Google的搜索框):
当你去谷歌并在句子继续时输入一个长句子,在每个单词之后,为光标位置下方的每个单词出现一个自动完成下拉列表.所以我需要一个类似的下拉列表,可以添加到jQuery Autocomplete上

我的功能很大,因为它具有多个单词的功能,并按字母顺序显示数组.这是<script代码:
<script>
$(function() {
var availableTags = <?php echo json_encode($sometags); ?>;
function split( val ) {
return val.split( / \s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
$( "#query" )
// don't navigate away from the field on tab when selecting an item
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
minLength: …Run Code Online (Sandbox Code Playgroud) 这是我上一个问题的延续.
我设法通过添加一个条件来修复"动画暂停每个连续击键",该条件e.which === 13在Enter按下键时检测并设置动画.
这是前一个工作方式:
如您所见,在输入换行符然后继续击键时,动画滞后,这意味着动画会在每次击键时执行.
这些是经过修改的,仅在Enter按下后才会生成动画:
它工作顺利(虽然在录制过程中有些滞后).
这些是删除每个字符时的工作方式(不长按):
正如您所看到的,它没有动画效果,因为当您连续删除每个角色时,动画会暂停,就像第一次尝试一样.
所以我现在想要实现的是反向的,在删除换行后平滑动画.
这是一个实时代码:
var kAnimationSpeed = 250;
var kPadding = 10;
$('div[contenteditable]').on('blur keyup paste input', function(e) {
var styleElement = $(this).prev();
var editorHeight = $(this).height();
var styleElementHeight = styleElement.height();
if (editorHeight !== styleElementHeight - kPadding * 2 && e.which === 13 || e.which === 8) {
styleElement.stop().animate({ height: editorHeight + kPadding * 2 }, kAnimationSpeed);
}
});Run Code Online (Sandbox Code Playgroud)
.autogrowWrapper {
position: relative;
}
.autogrow …Run Code Online (Sandbox Code Playgroud)