jquery ui autocomplete加载图形不显示

时间:2014-06-04 20:38:28

标签: javascript jquery jquery-ui

我有一个jquery自动完成下拉列表,该列表由ajax调用填充。当用户开始键入时,我要查找的预期行为是要显示的默认加载图形,它可以在ui-autocomplete-loading css类中找到。它似乎真的存在,因为当我使用警告框阻止UI线程时,我可以看到微调器出现。

UI Thread being blocked by alert box

一旦我删除了警告框并让它正常运行,下拉UI就会在它填充时锁定,从不显示微调器。

enter image description here

enter image description here

以下是我自动完成功能的实现:

function SetupAllMFGsAutocomplete(source, inputObjectTextField) {
    var datafromServer = source;
    $(inputObjectTextField).val(savedUserInputValue);
    var e = jQuery.Event("keydown");
    $(inputObjectTextField).trigger('focus').attr('value', savedUserInputValue).trigger(e);
    $(inputObjectTextField).each(function () {
        // Setup autocomplete
        $(this).autocomplete({
            // Override the source function so we can perform the search by value instead of label
            source: function (request, response) {
                var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");

                var results = $.grep(datafromServer, function (value) {
                    return matcher.test(value.value);
                });

                if (results.length == 0) {
                    results = ['No Matches Found'];
                }

                response(results);

            },
            select: function (event, ui) {
                if (ui.item.label === 'No Matches Found') {
                    event.preventDefault();
                }
                else {
                    event.preventDefault();
                    $(inputObjectTextField).val(ui.item.label);

                    // Set the input's value to the label instead
                    $(this).val(ui.item.label);
                    // Add a modelid attribute to store the selected model's id for saving
                    $(this).attr("modelid", ui.item.id);

                    if ($(this).attr("id") != "ModelXlateTextBox")
                        Save($(this).attr("id"), $(this));

                }
            },
            focus: function (event, ui) {
                if (ui.item.label === 'No Matches Found') {
                    event.preventDefault();
                }
            }
        })
    });
}

我应该以不同方式实施autocomplete功能吗?

0 个答案:

没有答案