实现自动完成:为什么在输入任何字符之前调用AJAX?

时间:2018-07-13 10:11:38

标签: ajax materialize

我在实现中使用了自动完成功能,并且通过ajax调用来检索数据,它可以正常工作,但是当我只想在输入了角色(使用onkeyup事件)后才调用ajax时,下拉列表将无法正确显示!!!! 在我忘记之前,如果没有找到数据,请帮助我在下拉列表中显示“找不到”(因为我的else条件不起作用)。这是我的代码,非常感谢:

$(document).ready(function() {
    var contents = $('#autocomplete-input')[0];
    contents.onkeyup = function (e) {

    $.ajax({
        type: 'GET',
        url: Routing.generate('crm_search_lead', {"search": 
        $(this).val()}),
        success: function (response) {
            var contacts = {};
            if (true === response.success) {
                var result = response.result;
                for (var i = 0; i < result.length; i++) {
                    var lastName = result[i].lastName ? 
                    result[i].lastName : '';
                    var firstName = result[i].firstName ? 
                    result[i].firstName : '';

                    contacts[lastName + " " + firstName] = null;
                }
                $('input.autocomplete').autocomplete({
                    data: contacts,
                    minLength: 2,

                });

            } else {
                $('input.autocomplete').autocomplete({
                    data: {
                        "NOT FOUND": null
                    }

                });
            }
        }
    });
    }
});

1 个答案:

答案 0 :(得分:0)

嗨,人们:)我可以通过使用focus()更改onkeyup()来解决它,这完全合乎逻辑,因为使用onkeyup()时,下拉列表会在输入的每个键上很快出现并消失。