jQuery Tag-It - 如何在选择标记时自动显示自动完成列表

时间:2016-04-26 13:40:58

标签: javascript jquery asp.net jquery-autocomplete tag-it

我在一个旧的(非常大的)jQuery Auto-Complete项目中使用了Tag-It,jQuery Ajaxasp.net web-forms

一切都很完美,但在达到目标之前还需要做一件事。一旦从自动完成下拉列表中选择了一个标记(单词或单词),我想显示一个自动完成列表,其中包含下一个标记(再次是单词或单词)的建议。 (手动输入百分号会给我我想要的行为,但我的用户不会对该解决方案感到满意。)

我一直在搜索没有成功,到目前为止我的所有尝试都失败了。 我在下面提供了使用的代码。我尝试在afterTagAdded方法中添加许多不同的东西。目前的尝试在“Object expected”

中给了jquery-ui 1.11.4.例外

如果有人能指出我正确的方向,我们感激不尽。 我不是javascript和jQuery的专家。

    $(document).ready(function () {
        var currentlyValidTags = [];

        $(".TagItInput").tagit({
            autocomplete: {
                source: function (request, response) {
                    $.ajax({
                        type: "POST",
                        url: "AutoCAdvTest3.aspx/GetTexts",
                        data: JSON.stringify({ text: request.term, tags: $(".TagItInput").tagit("assignedTags") }),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg) {
                            currentlyValidTags = msg.d;
                            response(msg.d);
                        }
                    });
                },
                minLength: 0
            },
            beforeTagAdded: function (event, ui) {
                // Only allow tags from the completion list
                if ($.inArray(ui.tagLabel, currentlyValidTags) == -1) {
                    return false;
                }
            },
            afterTagAdded: function (event, ui) {
                // without this line I get an error saying that AutoComplete is not initialized
                $(".TagItInput").autocomplete();
                // but.... Search method fails anyway
                $(".TagItInput").autocomplete("search", "%");
            },
        });

        $(".ui-autocomplete-input").focus();
    });

1 个答案:

答案 0 :(得分:0)

我设法找到了一个解决方案,但不确定这是否是正确的方法,并且谢天谢地对此提出任何意见。

手动按键盘上的空格键将搜索标签并下拉完成列表。

Tag-It afterTagAdded事件中,我正在使用jQuery将空格键击键事件发送到Tag-It创建的输入字段。似乎可以做到这一点,至少对于IE和Chrome的后期版本而言。

            afterTagAdded: function (event, ui) {
                var e = $.Event("keydown", { keyCode: 32 });
                $(".ui-autocomplete-input").trigger(e);
            },