Jquery UI自动完成仅提供一次建议

时间:2012-10-30 07:18:55

标签: jquery jquery-ui jquery-plugins jquery-autocomplete

我在我的标签文本框中使用jquery ui自动完成,它工作正常,但问题是它只给出了一次建议,例如第一次当我输入一个字符时它显示建议我从建议中选择一些东西并且它附加了在带有逗号的文本框中但是当我再次输入一个字符时它没有显示任何内容

我的代码正在关注

JQUERY

 function split(val) {
        return val.split(/,\s*/);
    }
    function extractLast(term) {
        return split(term).pop();
    }

    $("#tagsss")
    // 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({
            minLength: 0,
            source: function (request, response) {
                $.ajax({
                    url: "/Home/LookUpTag",
                    dataType: "json",
                    data: "searchterm=" + request.term,
                    success: function (data) {
                        response($.map(data, function (item) {
                            //  alert(data.length);
                            return {
                                label: item.Name,
                                value: item.Name,
                                Name: item.Name
                            };
                        }));
                    }
                });
            },
            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
                terms.push(ui.item.value);
                // add placeholder to get the comma-and-space at the end
                terms.push("");
                this.value = terms.join(",");
                return false;
            }
        });

我在控制器中的功能

控制器

public JsonResult LookUpTag(string searchterm)
    {

        var tags = context.tagService.Query().Where(x => x.name.Contains(searchterm)).Select(x => x.name).ToList();
        var list = tags.Select(item => new SearchJsonModel
        {
            Name = item,
            Value = item
        }).Select(model => (model)).ToList();
        return Json(list, JsonRequestBehavior.AllowGet);
    }

我做了很多但没有发现任何错误,请告诉我这段代码有什么不对。提前致谢

2 个答案:

答案 0 :(得分:0)

不确定,但您是否错过了致电extractLast()来检索输入中的最后一个字词?

源参数

source: function (request, response) {
                $.ajax({
                    url: "/echo/json/",
                    dataType: "json",
                    data: "searchterm=" + extractLast(request.term),
                    success: function (data) {
                        response($.map(data, function (item) {
                            //  alert(data.length);
                            return {
                                label: item.Name,
                                value: item.Name,
                                Name: item.Name
                            };
                        }));
                    }
                });
            }

答案 1 :(得分:-1)

绑定keydown并自动完成..................问题是

.bind("keydown", function (event) {

$('########').live("keydown.autocomplete", function() {
$inputbox = $(this);
$inputbox.autocomplete({
source: function(req, add){
$.ajax({
type: "POST",
url: #########################,
dataType: "json",
data: { place_of_loading_code: $inputbox.val() }
}).done(function( msg ) {
resultArr = eval(msg);
add(resultArr);
});
}
});
});