Автозаполнение работает на ключ, но не нажмите - PullRequest
0 голосов
/ 04 мая 2019

Как и в заголовках, я использую один и тот же код для обеих функций, например:

function autoComplete() {
    var jarName = $("#artifactId").val();
    var jarVersion = $("#version").val();
    url = "/xx/yy/zz/"+jarName+"/"+jarVersion+"";
    if (jarVersion===""){
        url = "/api/eetools/appdependencyfinder/"+jarName+"";
    }
    $.getJSON(url, function(completion) {
        $("#version").autocomplete({
            source: completion,
            minLength: 0
        })
        .focus(function() {
            $(this).autocomplete('search', $(this).val())
        });
    });
}

$("#version").on('keyup',autoComplete);
$("#version").on('click',autoComplete);

Я изменил автозаполнение с здесь

Я хотелпри нажатии показать все возможные варианты.

И при щелчке это работает для всех в вопросе, который я связал с созданной мной функцией.Однако, когда я нажимаю, это не работает.Если я нажму, перейду с экрана на новую вкладку, а затем вернусь, это работает.или, если я нажму на поле, щелкните по нему, а затем щелкните по нему еще раз.Можете ли вы увидеть причину такого типа поведения?

Это похоже на то, что для регистрации требуется 1 клик, затем на втором все работает.

Я попытался удалить on ('click')Функция и тестирование keyup, и заметили, что теперь для 'keyup' требуется 2 keyups для работы

После помещения console.log (завершение) в callback и console.log («HERE») внутри вызова фокуса, который я видел нажурнал завершения выполнения будет напечатан несколько раз, но не ЗДЕСЬ, и если я выключу экран, то снова здесь ЗДЕСЬ будет вставлять себя между отпечатками завершения.

1 Ответ

0 голосов
/ 04 мая 2019

Ради чистоты я выложу фрагмент в качестве ответа.Идея состоит в том, чтобы переместить оригинальное событие внутрь, как обратный вызов к autocomplete.

function autoComplete(event) {
    var jarName = $("#artifactId").val();
    var jarVersion = $("#version").val();
    url = "/xx/yy/zz/" + jarName + "/" + jarVersion + "";
    if (jarVersion === "") {
        url = "/api/eetools/appdependencyfinder/" + jarName + "";
    }
    $.getJSON(url, function(completion) {
        $("#version").autocomplete({
            source: completion,
            minLength: 0
        }).on(event, function() {
            $(this).autocomplete('search', $(this).val())
        });
    });
}
autoComplete('click'); 
autoComplete('keyup');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...