2012-10-19 31 views
2

我使用jQuery自动完成自动完成的文本区域等功能

$(function() { 
    var availableTags = [ 
     "ActionScript", 
     "AppleScript", 
     "Asp", 
     "BASIC", 
     "C", 
     "C++", 
     "Clojure", 
     "COBOL", 
     "ColdFusion", 
     "Erlang", 
     "Fortran", 
     "Groovy", 
     "Haskell", 
     "Java", 
     "JavaScript", 
     "Lisp", 
     "Perl", 
     "PHP", 
     "Python", 
     "Ruby", 
     "Scala", 
     "Scheme" 
    ]; 
    $("#tags").autocomplete({ 
     source: availableTags 
    }); 
}); 

虽然我希望做的是摆脱availableTags,并使它所以它搜索中说div.post h3.username并从那里获取用户名称。另外我想用这个textarea这是可能的吗?

下一个问题是,当你第一次写@时,这是唯一可行的工作,那么像@T这样的用户将显示所有的T用户?

回答

0

如果您在“div.post h3.username”中使用了每个用户名,那么您必须创建一个包含所有用户名(类似于您要删除的用户名)的列表,但更多如果你需要更多的帮助,那么需要关于那些元素如何包含这些名称的信息。

至于使用@来检索用户名,取决于你想要的。例如,如果您坚持在书面文本旁边必须出现一个包含建议用户名的新框,那么用textareas是不可能的。这是因为没有跨浏览器解决方案来本地化您正在编写的位置的坐标。而不是textarea,你必须使用具有contenteditable属性的div。但是,如果您愿意将这些用户名包含在textarea下的另一个div中,则很可能。如果你想描述你的期望,也许我可以提供一些代码。

虽然你可能想要更喜欢this类型的自动完成。

+0

列表老实说可以在textarea旁边,这很好,老实说!虽然我所说的是说我们在这个文本区域。当我写@时,我想让该div显示在我选择的左侧或右侧,以及在该页面上发布的用户列表。并且在接近时变得更小,所以@Rober会提出罗伯特史密斯(P.S.我使用的代码将不会在名称中使用空格,只有%20被添加,我相信)。 – EasyBB

+0

然后,hexist和Barmar的建议对您很有帮助。这里有一个演示http://jsbin.com/usuw​​e/2。 –

+0

对我来说唯一的问题是,我是一个新手,你可以告诉。而Hexist我不太明白。和Barmar我不明白他在说什么,也不知道如何去做。记住我是一个新手,哈哈。 – EasyBB

0

如果你想要做一些很花哨的事情,比如根据内容从一个列表或另一个列表中搜索,你会想要做一个自定义的搜索功能。取而代之的source: availableTags你会做这样的事情

source: function(request, response) { .... } 

关于如何写功能的详细信息,请参阅http://api.jqueryui.com/autocomplete/,但会给你你需要解析出@符号的灵活性,同时,诸如此类的事情。

+0

我试着看看链接,它让我很困惑LOL。感谢您顺便回答这个问题。我会再试一次来看看它 – EasyBB

0

动态生成标签列表非常简单。不要为source:选项提供数组,而是提供一个搜索DIV并返回所有匹配的标记的函数。

由于您的源代码函数可以查看用户输入的内容,因此它可以在输入中搜索以@开头的单词,并在查找完成时使用该函数。