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

Display entire list upon entering a jQuery autocomplete textbox

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

jQuery代码

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

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


尝试:

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

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


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

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

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


所有的答案都是正确的。我添加了这个,因为minChars在新版本中被弃用。
使用minLength。

minLength : 0
此外,您可以考虑使用文本字段旁边的按钮,其类似于下拉菜单和所有可用选项的切换
快乐的编码!

编辑

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

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