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 中搜索并从那里获取用户名。我也想将它用于文本区域,这可能吗?

下一个问题是,是否有可能仅在您第一次写 @ 时才起作用,然后像 @T 这样的用户会显示所有 T 用户?

4

3 回答 3

0

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

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

不过,您可能更喜欢这种自动完成功能。

于 2012-10-19T23:14:15.697 回答
0

如果你想做一些花哨的完成,比如根据内容从一个列表或另一个列表中搜索,你会想要做一个自定义搜索功能。而不是source: availableTags你会做类似的事情

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

有关如何编写该函数的更多详细信息,请参阅http://api.jqueryui.com/autocomplete/,但这将为您提供解析 @ 符号和诸如此类的东西所需的灵活性。

于 2012-10-19T23:20:30.660 回答
0

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

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

于 2012-10-19T23:26:47.320 回答