使用实例选项未定义Jquery autocomplete ui.item

时间:2017-07-04 20:35:23

标签: javascript jquery jquery-ui autocomplete

我正在使用jquery ui 1.12.1和jquery 3.1.1。我正在努力让我的自动完成工作。到目前为止,我有正确显示和填充的结果。但是我遇到了一个问题,ui.item在select函数中未定义。这导致了各种各样的问题。我已经看到关于该主题的其他几个问题,但没有一个专门使用实例选项。任何帮助指出我的方向将不胜感激。

http://api.jqueryui.com/autocomplete/#method-instance

Jquery Autocomplete Select TypeError: ui.item undefined

$("#municipality").blur(function () {
    var keyEvent = $.Event("keydown");
    keyEvent.keyCode = $.ui.keyCode.ENTER;
    $(this).trigger(keyEvent);
}).autocomplete({
    minLength: 3,
    autoFocus: true,
    position: { collision: "flipfit" },
    source: function (request, response) {
        var muniUrl = serviceUrl + "sns/getinfobyterm?term=" + encodeURIComponent(request.term);
        $.ajax({
            url: muniUrl,
            contentType: 'application/json',
            xhrFields: {
                withCredentials: true
            },
            beforeSend: function (xhr) {
                xhr.setRequestHeader("Authorization", "Bearer " + webServiceToken);
            },
            type: 'get',
            error: function (ret) {
                BccViewModel.errorForUser("Unable to get municipalities.  Please try again later.");
                $("#FinancialErrorPopup").modal();
                console.log(ret);
            },
            success: function (ret) {
                response(ret);
            },
            complete: function (ret) {
                $("#municipality").removeClass("ui-autocomplete-loading");
            }
        });
    },
    select: function (event, ui) {
        ClearModelAfterMunicipalityChange();
        if (ui.item !== null) {
            ProcessMunicipalityData(ui.item);
        };
    },
    close: function () {
        // change what's displayed in the input field to just the town name instead of full label from the autocomplete
        $("#municipality").val(SnsViewModel.municipality());
    }
}).autocomplete("instance")._renderItem = function (ul, item) {
    return $("<li>")
      .append("<div>" + item.MunicipalityInfo.MunicipalityLabel + "</div>")
      .appendTo(ul);
};

0 个答案:

没有答案