jQuery Auto完成插件,多个选择覆盖以前的选择

时间:2013-06-24 16:36:12

标签: javascript jquery

我在文本字段的视图中使用jQuery Auto Complete Plugin。单一选择非常有效。

我正在合并多个选择,但出于某种原因,如果我选择多个值,则会覆盖先前的选择。

我正在关注jQuery Plugin Tutorials上的示例。

 $("#ServiceEntryFilter_System").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: serviceentrySystemURL, type: "POST", dataType: "json",
                minLength: 0,
                data: { searchText: extractLast(request.term), maxResult: 100, instrumenttype: userroleid },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { value: item }
                    }))
                }
            })
        },
        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;


        }
    });

    function split(val) {

        return val.split(/,\s*/);

    }

    function extractLast(term) {

        return split(term).pop();

    }


[HttpPost]
public JsonResult FindSystem(string searchText, int maxResult, string instrumenttype)
{
    int UserRoleID = AccessHelper.GetUserRoleID(User.Identity.Name);
    var result = RunLog.Domain.Lists.GlobalList.GetInstrumentSystem(searchText, maxResult, instrumenttype);

    return Json(result);
}

1 个答案:

答案 0 :(得分:0)

我不是100%确定这是否是你想要的,但是选择事件不是你想要的。在运行该函数后,它似乎会覆盖该值。

我尝试了这个,它似乎为数组添加了值:(我只是将其更改为焦点)

            focus: function(event, ui){
            var terms = this.value.split(", ");

            // 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;


        }