Ошибка типа: размытие не является функцией - PullRequest
0 голосов
/ 30 апреля 2019

В функции автозаполнения JQuery UI я использую .blur(), чтобы закрыть клавиатуру IOS при выборе:

// Purpose: Instantiate Autocomplete
    function autocomplete() {
        searchInput.autocomplete({
            source: autocompleteCourts,
            minLength: 3,
            select: function (event, ui) {
                location.hash = "trigger-header";
                isEFile(event, ui);

                // Close keyboard on IOS when an option is selected
                ui.blur();
            }, open: function (event, ui) {
                $("li.ui-menu-item:odd").addClass("ui-menu-item-alternate");
                $(".ui-menu-item-alternate").css("background-color", "#f2f4f7");
                $("ul.ui-menu").addClass("mt-2 w-auto");
                $("ul.ui-menu").css("z-index", 0);
            }
        });

Браузер выдает ошибку Uncaught TypeError: ui.blur is not a function.

Должен ли я проверить, существует ли функция blur() перед ее вызовом?

1 Ответ

2 голосов
/ 30 апреля 2019

ui - это элемент DOM, к которому присоединено автозаполнение, а не объект jQuery.Вам необходимо вызвать jQuery() для вызова таких методов, как .blur().Так что измените

ui.blur();

на

$(ui).blur();

Это довольно распространено в jQuery - обратные вызовы обычно получают элементы DOM, а не объекты-оболочки jQuery.Например, когда вы используете .each(), вторым аргументом функции обратного вызова является элемент DOM.

...