Раскрывающийся список mdb_autocomplete не закрывается при событии щелчка - PullRequest
1 голос
/ 11 марта 2019

В некоторых случаях, обычно после того, как значения были кэшированы из начального поиска, я не могу получить раскрывающийся список mdb_autocomplete, чтобы закрыть его одним щелчком мыши. Мне часто приходится дважды щелкать по своему выбору, чтобы закрыть его. Я динамически заполняю значения в раскрывающемся списке с помощью Ajax-вызова к методу службы через метод действия контроллера, который ищет в активном каталоге первые 30 значений имени. Обратного вызова не происходит, пока пользователь не введет хотя бы 3 значения в поле выбора mdb_autocomplete. Обратный вызов и заполнение раскрывающегося списка работают очень хорошо, но событие щелчка после выбора значения часто не закрывает раскрывающийся список. Кроме того, мы вынуждены использовать mdb boostrap вместо обычной библиотеки начальной загрузки. Я включил представление, сервис и машинописный код, который используется для генерации и заполнения раскрывающегося списка.

Вид:

        <div class="form-group">
            <label class="font-weight-bold" for="RequestorSearchInput">Requestor</label>
            <input type="text" id="RequestorSearchInput" name="RequestorSearchInput" class="form-control mdb-autocomplete" />
            <span id="loading_data_icon"></span>
        </div> 

Способ обслуживания:

    public List<string> GetRequestor(string aRequestor)
    {
        IEnumerable<Dictionary<string, string>> requestorNames;
        using (ActiveDirectoryService service = new ActiveDirectoryService(<LDAP Domain Name>))
        {
            string[] propertiesToLoad = new string[] { "displayName" };
            //requestorNames = service.SearchByPartialUsername(aRequestor, propertiesToLoad).Take(30).Union(service.SearchBySurname(aRequestor, propertiesToLoad).Take(30));
            requestorNames = service.SearchBySurname(aRequestor, propertiesToLoad).Take(30);
        }
        return requestorNames.SelectMany(x => x.Values).Where(y => y.IndexOf(",", StringComparison.Ordinal) >= 0).Distinct().ToList();
    }

Машинопись:

private handleRequestorSearch() {
    let options: string[] = new Array();

    // @ts-ignore
    let searchval = $("#RequestorSearchInput").val().length;

    if (searchval >= 3) {
        $.ajax({
            url: main.getControllerHREF("GetRequestor", "Search"),
            method: "POST",
            data: {
                requestor: $("#RequestorSearchInput").val()
            },
            async: false,
            dataType: "json",
            success: function (names) {

                $.each(names, function () {
                    options.push(this);
                });

                // @ts-ignore
                $("#RequestorSearchInput").mdb_autocomplete({
                    data: options
                }).select(function () {
                    $("#RequestorSearchInput").focus;
                });

            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...