在JavaScript和HTML中创建intellisense类型控件

在JavaScript和HTML中创建intellisense类型控件,javascript,jquery,html,Javascript,Jquery,Html,我将着手创建一个Jquery插件,它将以类似于VisualStudio中显示的方式提供提前类型查找 虽然我熟悉autocomplete和其他类似的提前输入插件,但我想让弹出窗口位于文本区域中输入的单词下方 有没有办法在文本框中获取插入符号的当前x和y 谢谢 Sam有一个复杂的解决方案,它涉及到用画布元素覆盖输入并测量其中的文本(或者只是有一个隐藏的画布元素)——但我认为这在旧的IE中不起作用 您可以通过将字符及其相对宽度相加(使用已知宽度的单色字体)来测量文本的宽度。然后,只需抓取输入的上/左,

我将着手创建一个Jquery插件,它将以类似于VisualStudio中显示的方式提供提前类型查找

虽然我熟悉autocomplete和其他类似的提前输入插件,但我想让弹出窗口位于文本区域中输入的单词下方

有没有办法在文本框中获取插入符号的当前x和y

谢谢


Sam

有一个复杂的解决方案,它涉及到用画布元素覆盖输入并测量其中的文本(或者只是有一个隐藏的画布元素)——但我认为这在旧的IE中不起作用

您可以通过将字符及其相对宽度相加(使用已知宽度的单色字体)来测量文本的宽度。然后,只需抓取输入的上/左,并在单词(包括空格)之前添加charWidth*num个字符,就可以获得单词结尾(或开头,如果这样做的话)的稍微准确的“上/左”


如果你需要一个编码的例子,让我知道,我可以想出一些合适的。然而,这(imo)将是最简单的方法(单字体+计算宽度+输入偏移量)

您可以使用选择和范围API实现。但是IE和非IE之间的API有很多不同。请查看msdn和mdn以选择和范围API。

可能重复:谢谢,但我相信这是指插入符号在字符串中的位置,不是相对于窗口/元素的屏幕位置好奇…这是否适用于换行的文本区域?可能。。。您可以阅读一些关于范围和如何确定新行的文档。。或者你喜欢很多Wysiwyg并提供iframe+屏幕外输入或contenteditable div?谢谢你的建议,从中我发现这其实不可能。我学到了很多关于range js的帮助,比如rangy,所以这很有用。也许最好的解决方案是固定高度和宽度的字体。谢谢