自动完成 - 显示整个列表

问题描述:

我有这样的代码:自动完成 - 显示整个列表

var myList = [ "Avellino", "Enna", "Frosinone" ]; 

myInput.autocomplete({ 
    source: function(request, response) {    
     var data = $.grep(myList, function(value) { 
      return value.substring(0, request.term.length).toLowerCase() == request.term.toLowerCase(); 
     });    

     response(data); 
    },   
    appendTo: "#myDiv" 
}); 

,我想,当我点击输入框,显示所有元素的列表(与选择的值相同的自动完成框)的myList

我想我需要一个第三部分的处理程序,如:

myInput.focus(function() { 

}); 

,但我不知道如何使用自动完成dialogate。任何想法/解决方案?

@jasonlfunk是半路那里 - 你必须在focus调用search在自动完成构件来得到这个工作:

var myList = [ "Avellino", "Enna", "Frosinone" ]; 

$('#myInput').autocomplete({ 
    minLength: 0, 
    source: function(request, response) {    
     var data = $.grep(myList, function(value) { 
      return value.substring(0, request.term.length).toLowerCase() == request.term.toLowerCase(); 
     });    

     response(data); 
    } 
}).focus(function() { 
    $(this).autocomplete("search", ""); 
}); 

例子:http://jsfiddle.net/BRDBd/

+0

它完美的作品!谢谢! – markzzz 2012-02-22 14:21:42

+0

实际上,我的解决方案更好,因为它处理的情况下,您键入的东西,点击离开,然后再次集中元素...但它不是一个比赛。 – jasonlfunk 2012-02-22 14:53:39

查看自动完成插件的minLength选项。将它设置为零应该做你想要的。

var myList = [ "Avellino", "Enna", "Frosinone" ]; 

myInput.autocomplete({ 
    minLength: 0, 
    source: function(request, response) {    
     var data = $.grep(myList, function(value) { 
      return value.substring(0, request.term.length).toLowerCase() == request.term.toLowerCase(); 
     });    

     response(data); 
    },   
    appendTo: "#myDiv" 
}).focus(function(){ 
    $(this).autocomplete("search",$(this).val()); 
});​; 
+0

嗯,没有它不工作! http://jsfiddle.net/Ek8nS/如果我点击输入,我看不到列表.. – markzzz 2012-02-22 13:57:33

+0

你说得对!抱歉。我更新了我的答案。现在它可以工作。 :) – jasonlfunk 2012-02-22 14:26:53

+0

完美答案,谢谢老兄:) – 2017-02-11 11:59:33