简体   繁体   English

使用jQuery自动完成获取@user和#tag吗?

[英]Getting both @user and #tag using jquery autocomplete?

I have been using Andrew Whitaker's code at jsfiddle.net/5xbhY. 我在jsfiddle.net/5xbhY上一直在使用Andrew Whitaker的代码。 I was hoping someone could help me make it work for both @user and #tags ( they come from different external db's but I should be able to write that part what I am having trouble with is detecting the hash). 我希望有人可以帮助我使它同时适用于@user和#tags(它们来自不同的外部数据库,但是我应该能够写出我遇到问题的那一部分来检测哈希)。

var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"
        ];

    var startTyping = "Start typing...";

    function split(val) {
        return val.split(/@/);
    }

    function extractLast(term) {
        return split(term).pop();
    }

    $("#tags")
    .bind("keydown", function(event) {
        if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) {
            event.preventDefault();
        }
    }).autocomplete({
        minLength: 0,
        source: function(request, response) {
            var term = request.term,
                results = [];
            if (term.indexOf("@") >= 0) {
                term = extractLast(request.term);
                if (term.length > 0) {
                    results = $.ui.autocomplete.filter(
                    availableTags, term);
                } else {
                    results = [startTyping];
                }
            }
            response(results);
        },
        focus: function() {
            return false;
        },
        select: function(event, ui) {
            if (ui.item.value !== startTyping) {
                var terms = this.value.split(' ');
                terms.pop();
                terms.push("@" + ui.item.value);
                this.value = terms.join(" ");
            }
            return false;
        }
    });

Do you mean something like this: http://jsfiddle.net/BfAtM/181/ 您的意思是这样的吗: http : //jsfiddle.net/BfAtM/181/

Oh, I noticed a bit late I'm responding to a 3 months old question. 哦,我注意到我回答一个3个月大的问题有点晚了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM