在令牌之后触发的jQuery自动完成插件

mik*_*r87 5 jquery autocomplete

我正在构建一个应用程序,并希望在textarea中进行自动完成,就像Twitter/Facebook如何使用@ [name].但是,当我输入[TID:x]时,我想触发它​​,其中x是任意长度的整数.

看到Twitter/Facebook在您点击@符号后开始自动完成,然后将文本数据发送到自动完成后.有没有人知道jQuery UI插件(或任何其他插件)是否可以做这样的事情?

And*_*ker 5

这确实是可能的。您可以利用自动完成小部件的事件(searchselect)来完成此操作:

var triggered = false;
var trigger = "TDI:";

$("input").autocomplete({
    source: [...],
    search: function() {
        if (!triggered) {
            return false;
        }
    },
    select: function(event, ui) {
        var text = this.value;
        var pos = text.lastIndexOf(trigger);

        this.value = text.substring(0, pos + trigger.length) +
            ui.item.value;

        triggered = false;

        return false;
    },
    focus: function() { return false; },
    minLength: 0
}).bind("keyup", function() {
    var text = this.value;
    var len = text.length;
    var last;
    var query;
    var index;

    if (triggered) {
        index = text.lastIndexOf(trigger);
        query = text.substring(index + trigger.length);
        $(this).autocomplete("search", query);
    }
    else if (len >= trigger.length) {
        last = text.substring(len - trigger.length);
        triggered = (last === trigger);
    }
});
Run Code Online (Sandbox Code Playgroud)

演示在这里: http: //jsfiddle.net/andrewwhitaker/kCkga/

笔记:

  • 这是一个非常有限的演示。如果您尝试使其在字符串中间自动完成,它将不起作用。
  • 要完成此示例,您需要做一些工作来确定光标在输入字段中的位置并在其中插入文本
  • 可能还有其他错误,但我绝对认为这是可行的。希望这能让你开始。


小智 5

我已经为它创建了一个插件,它使用了jQuery-UI Autocomplete和Andrew的例子(感谢你).

网址:https://github.com/experteer/autocompleteTrigger

演示:http://jsfiddle.net/dmattes/2YRgW/1/

$('input,textarea').autocompleteTrigger({
  triggerStart : '@',
  triggerEnd: '',
  source: [
    "Asp",
    "BASIC",
    "COBOL",
    "ColdFusion",
    "Erlang",
    "Fortran",
    "Groovy",
    "Java",
    "JavaScript",
    "Lisp",
    "Perl",
    "PHP",
    "Python",
    "Ruby",
    "Scala",
    "Scheme"
  ]
});
Run Code Online (Sandbox Code Playgroud)

最好,丹尼尔