我在我的网站上使用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”)时,下拉列表会显示。
答案 0 :(得分:0)
没有必要为这些东西使用计时器/键盘监听器。我尝试在文档加载时调用bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
插件函数,它运行良好..
检查fiddle