JQuery UI自动完成 - 在提示输入后隐藏列表

Mar*_*arc 20 jquery jquery-ui-autocomplete

我有一个输入.我使用Jquery UI自动完成功能向用户提出建议.让我的列表中的图像有3项:item1,item2,item3.我要找的是当用户点击进入时要关闭的列表.例如,如果用户只输入"it",则将显示所有3个元素.在那种情况下,如果他点击进入,我希望该列表被关闭.我无法为此解决问题.希望有人能提供帮助.干杯.渣.

http://jsfiddle.net/vXMDR/

我的HTML:

<input id="search" type="input" />?
Run Code Online (Sandbox Code Playgroud)

我的js:

$(function() {

    var availableTags = [
            "item1","item2","item3"
        ];

    $("#search").autocomplete({
        source:availableTags,
        minLength: 0
        });
});?
Run Code Online (Sandbox Code Playgroud)

kar*_*m79 24

$(function() {

    var availableTags = [
            "item1","item2","item3"
        ];

    $("#search").autocomplete({
        source:availableTags,
        minLength: 0
    }).keyup(function (e) {
        if(e.which === 13) {
            $(".ui-menu-item").hide();
        }            
    });
});?
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/vXMDR/2/

  • 嗯,我不知道你为什么要隐藏这个项目,而不是只是调用显式的`close`方法 - http://docs.jquery.com/UI/Autocomplete#method-close (2认同)
  • 请注意,此代码仅隐藏自动完成列表中的项目,但不会隐藏列表本身.请参阅@shanabus以获得更好的方法. (2认同)

sha*_*bus 24

这是解决方案:http://jsfiddle.net/vXMDR/3/

如果您有疑问,请告诉我.

神奇的是将自动完成关闭方法绑定到按键

 $("#search").keypress(function(e){ 
    if (!e) e = window.event;   
    if (e.keyCode == '13'){
      $('#search').autocomplete('close');
      return false;
    }
  });
Run Code Online (Sandbox Code Playgroud)

UPDATE

$("#search").keypress(function(e){将#search元素的按键绑定到指定的函数,传入event对象.你也可以这样写$("#search").on('keypress', function(e) {...

if (!e) e = window.event;确保如果未传入有效事件,则将其设置e为当前window.event对象.

最后,if (e.keyCode == '13'){测试事件键码值等于'enter'键.有关有效密钥代码的列表,请参见此处.

以下是自动完成关闭方法的文档 - http://docs.jquery.com/UI/Autocomplete#method-close

  • 好的,但要小心接受的答案,`hide()`元素与关闭自动完成功能的方式不同或有记录. (3认同)