Javascript 将div直接放置在文本输入字段的右侧
我正试图将一个div直接放在文本输入字段中键入的文本的右侧。对我来说,这似乎很简单,只需获取输入值val的长度并将div定位到该值即可。但是,当输入字段中有1个字符时,它仅位于文本的正后方。随着键入的内容越来越多,偏移量也越来越大 我试图创建的是一个建议框,它将完成正在键入的单词 我如何定位它,使它在每个键上位于输入值的右侧和右侧 这是一把js小提琴: 下面是我如何在keyup上定位它的:Javascript 将div直接放置在文本输入字段的右侧,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正试图将一个div直接放在文本输入字段中键入的文本的右侧。对我来说,这似乎很简单,只需获取输入值val的长度并将div定位到该值即可。但是,当输入字段中有1个字符时,它仅位于文本的正后方。随着键入的内容越来越多,偏移量也越来越大 我试图创建的是一个建议框,它将完成正在键入的单词 我如何定位它,使它在每个键上位于输入值的右侧和右侧 这是一把js小提琴: 下面是我如何在keyup上定位它的: $('input').on('keyup', function(){ $('#suggestion
$('input').on('keyup', function(){
$('#suggestion').css('left', $(this).val().length+'rem');
});
No matter what units I try, px, em, rem, I get similar results.
您必须计算文本的宽度,然后设置left属性 这里有一个JavaScript函数可以实现这一点 此函数用于创建一个span标记,赋予它与输入标记相同的属性,将输入文本附加到span,然后将span标记附加到DOM,并使用.offsetWidth获取宽度 $'input'。在'keyup'上,函数{ $'suggestion'.css'left',宽度$this.val+1+'px'; }; 函数宽度文本{ var s=document.createElement'span'; var t=document.createTextNodetext s、 儿童; s、 id=‘长度’; s、 style.fontSize='1.2rem'; s、 style.visibly='hidden'; s、 style.opacity='0'; var m=document.getElementById'suggestion'; 对于i=0;i
它也不是紧跟在1个字符的文本之后,只是没有足够的“大小错误”来引起注意。您天真地使用rem作为大小单位,而这并不反映键入字符的实际宽度,只是基于当前字体的标准宽度。抱歉,您当前的整个方法都无法工作,这是一个很好的例子。你应该问一个关于如何解决你的问题的新问题,而不是用一个尝试和不可能的解决方法来寻求帮助。有时是最后一个,有时更多。在此处运行代码段或在此处选中:然后键入mn、、nmsdl、.fn或其他很长的代码段,您将看到它并不完全在右侧,但现在左侧有点太多。