jQuery自动填充:首次输入

时间:2016-03-04 07:19:52

标签: javascript jquery jquery-ui autocomplete

我在我的网站上使用jQuery UI Autocomplete。我的问题:

  • 在Chrome和Firefox中:当用户在加载网站后快速输入四个字母的字词并停止输入时,下拉列表不会立即显示。只有在输入另一个字母后,才会显示下拉列表。从现在开始,当用户更改搜索词时,下拉列表始终显示,因此没有问题。当用户重新加载页面并快速键入新术语并停止时,再次显示下拉列表。当重新加载页面后,用户输入的术语非常慢,下拉列表显示,然后再次没有问题。如何在“第一次打字”后显示下拉列表?

  • 在Internet Explorer中,下拉列表从不显示。

我的代码来了:

$('#my-search-input').on('keyup', function () {
            var characterLength = $(this).val().length;

            if ((characterLength > 2) || (characterLength == 0)) {
                typewatch(function () {
                    $('#my-search-input').autocomplete({
                        source: function (request, response) {
                            $.post(Routing.generate('my_path'), {
                                term: request.term
                            }, function (data) {
                                response(data)
                            }, 'json');
                        },
                        close: function (event, ui) {
                            loadResults();
                        }
                    });
                    loadResults();
                }, 500);
            }
        });

        var typewatch = (function () {
            var timer = 0;
            return function (callback, ms) {
                clearTimeout(timer);
                timer = setTimeout(callback, ms);
            };
        })();

更新:JSFIDDLE

这里有一个JS Fiddle,它有类似的代码并包含问题: http://jsfiddle.net/cd1kd08s/

当您输入“Alban”以查找“Albania”时,下拉菜单不会立即显示。当您继续键入字母“i”(产生“Albani”)时,下拉列表会显示。

1 个答案:

答案 0 :(得分:0)

没有必要为这些东西使用计时器/键盘监听器。我尝试在文档加载时调用bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)插件函数,它运行良好..

检查fiddle