输入jQuery自动填充文本框后显示整个列表

时间:2011-05-11 21:46:26

标签: jquery autocomplete jquery-autocomplete

我正在使用jQuery autocomplete plugin。有没有办法当用户输入文本框(连接到自动完成)时,列表会显示顶部的字母项?某种触发?

jQuery代码

$('.someTextbox').autocomplete({
source: function (request, response) {
$.ajax({
url: serviceUrl + "/AddDocumentLinesService.svc/GetLineTypes",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
data: {
maxRows: 10,
textStartsWith: request.term
},
success: function (data) {
response($.map(data, function (item) {
return {
label: item.LineTypeCode + ' - (' + item.Description + ')',
value: item.LineTypeCode
}
}));
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
}
});

我希望第二个用户输入列表出现的'$('。someTextbox')'文本框。

3 个答案:

答案 0 :(得分:2)

尝试:

 $('.someTextbox').focus(function() { $(this).search(); });

根据文档,.search()会手动触发搜索。您还可以将options.minChars设置为0,将options.delay设置为小的,这也应该有效。请参阅:http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

答案 1 :(得分:1)

也许您可以尝试将minChars option设置为0,并GetLineTypes检查给定字符串的长度。如果它是0长度 - 返回第一个字母项目。

另一个选项是连接到文本框的焦点事件并手动触发自动完成功能。也许你可以用这样的东西“欺骗”自动完成:

$('.sometextbox').focus(function() {
   if ($('.sometextbox').val().length ==0) { 
   //no text entered yet
   $('.sometextbox').val('  '); //insert 2 white spaces in order to trigger the autocomplete
}
});

答案 2 :(得分:0)

所有答案都是正确的。我添加了这个,因为minChars在新版本中已被弃用。
使用minLength。
minLength : 0
此外,您可以考虑使用文本字段旁边的按钮,其类似于下拉菜单和所有可用选项的切换 快乐的编码!

修改
此外,由于您正在加载整个列表,因此可以将延迟设置为0,从而覆盖您可能提到的现有延迟行为。

$('input#textboxid').autocomplete('search','','delay',0);