jQuery autocomplete @mention

后端 未结 2 1366
盖世英雄少女心
盖世英雄少女心 2021-01-16 15:23

I have this autocomplete plugin from Andrew Whitaker - DEMO Lets say I have a string in a textarea

\"@peterwateber welco

相关标签:
2条回答
  • 2021-01-16 16:13

    I wrote the original code mentioned here and have fixed the menu problem Peter was having:

    http://www.hawkee.com/snippet/9391/

    0 讨论(0)
  • 2021-01-16 16:17

    Hiya Working demo here: http://jsfiddle.net/67dxH/

    Already had good discussion above like you said behavior is like: value of the hidden tag as = @[C#] and the textarea as @C#

    Jope this is helpful man, let me know how it goes, cheers! :)

    Jquery Code

    function split(val) {
        return val.split(/@\s*/);
    }
    
    function extractLast(term) {
        return split(term).pop();
    }
    
    function getTags(term, callback) {
        $.ajax({
            url: "http://api.stackoverflow.com/1.1/tags",
            data: {
                filter: term,
                pagesize: 5
            },
            type: "POST",
            success: callback,
            jsonp: "jsonp",
            dataType: "jsonp"
        });    
    }
    
    $(document).ready(function() {
    
        $("#tags")
        // don't navigate away from the field on tab when selecting an item
        .bind("keydown", function(event) {
            if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) {
    
                event.preventDefault();
            }
        }).autocomplete({
            source: function(request, response) {
                if (request.term.indexOf("@") >= 0) {
                    $("#loading").show();
                    getTags(extractLast(request.term), function(data) {
                        response($.map(data.tags, function(el) {
                            return {
                                value: el.name,
                                count: el.count
                            }
                        }));
                        $("#loading").hide();                    
                    });
                }
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            },
            select: function(event, ui) {
                var terms = split(this.value);
                // remove the current input
                terms.pop();
                // add the selected item
                ui.item.value = "@" + ui.item.value;   
                terms.push(ui.item.value);
                // add placeholder to get the comma-and-space at the end
                terms.push("");
                this.value = terms.join("");
                return false;
            }
        }).data("autocomplete")._renderItem = function(ul, item) {
            return $("<li>")
                .data("item.autocomplete", item)
                .append("<a>@[" + item.label + "]&nbsp;<span class='count'>(" + item.count + ")</span></a>")
                .appendTo(ul);
        };
    });​
    
    0 讨论(0)
提交回复
热议问题