textarea的自动完成弹出窗口

时间:2011-10-08 09:14:43

标签: jquery html5 autocomplete

我正在尝试在我的网络应用中构建用户名自动填充功能,因此当您键入@符号时,会出现一个带有箭头的弹出窗口,指向@符号并继续向下过滤输入用户名(并单击完成它)。

我可以完成大部分工作,但是我正在努力的主要部分是获得x和y中的一些坐标,我可以使用它来定位弹出窗口......

这里有一个JSFiddle小提琴,我正在研究.. http://jsfiddle.net/tarnfeld/Xefdb/3/

为了使主要功能正常工作,我有一个红色的跨度,我想移动到插入位置(小符号作为你的打字)所以我可以进一步扩展这个是非常棒的自动完成爱。

任何帮助将不胜感激:)

谢谢!

PS:我找到了这样的答案Twitter-style autocomplete in textarea但是他们不会在@ char位置下弹出......

2 个答案:

答案 0 :(得分:1)

这似乎很复杂。基本上,您必须获取当前的字符位置并将其转换为X / Y坐标。

我找到了以下可能对您有帮助的链接:

计算x / y位置是棘手的部分。两个解决方案(第二和第三个链接)都会创建临时元素(<div><textarea>)并使用计算其高度/宽度的文本连续填充它们。

HTH。

答案 1 :(得分:0)

哇噢!

所以,通过一些阅读和黑客,我得到了这个工作..你可以看看这里(请阅读顶部的消息!)http://jsfiddle.net/Xefdb/9/

我还没有在IE中尝试过,所以如果有人可以,如果它没有正常工作,请给我一个截图@tarnfeld,这真是太棒了。

以下是它如何运作的快速介绍:

  • 获得插入位置
  • 复制可编辑包装并将其放在与真正可编辑包装器相同的位置
  • 将你刚才写的角色包裹在一个范围内
  • 使用jQuery获取跨度绝对位置
  • 删除重复的包装
  • 将您想要跟踪插入符号的元素放在刚刚制作的范围的x / y处。

如果有人能找到更好的方法,请告诉我!

PS。它应该处理滚动!