2012-10-10 71 views
0

我手动触发jQuery自动完成框有问题。源文件带有$ .ajax并返回json。同样在'open'函数中,我将一些自定义项添加到框中。现在我需要的是,当你点击输入时,就会看到自动填充框。它不必搜索或任何东西。只需显示带有自定义附加项目的框。我试过minLength:0和$(this).autocomplete('search','');但这些工作。任何帮助,将不胜感激。jQuery UI自动完成框显示

当前代码:

$(".searchBox").autocomplete({ 
    delay: 300, 
    open: function() { 
     $('.ui-autocomplete').prepend('<li class="nav-button ui-menu-close"><a href="#">&#215</a></li>'); 

     var position = $('.ui-autocomplete').position(), 
      left = position.left, top = position.right; 

     $('.ui-autocomplete').css({left: 0, 
      width: "auto", 
      'z-index': 1000 
     }); 
     $('.ui-menu-close').on('click', function() { 
      $('.searchBox').autocomplete('close'); 
     }); 
    }, 
    source: function(request, response) 
    { 
     $.ajax({ 
     url: '/search', 
     data: { 
      'ajax' : 1, 
      'query': request.term 
     }, 
     timeout: 3000, 
     dataType: 'json', 
     success: function(data) {       
      console.log(data) 
     }, 
    }); 
    }, 
    minLength: 0 
}).focus(function() { 
    $(this).data('autocomplete')._trigger('open'); 
    $(this).trigger('keydown.autocomplete'); 
}); 

谢谢。

+0

一些代码将是很好! –

回答

0

自动完成对话框只在keydown事件打开:

$('#your_autocomplete_field').trigger('keydown'); 

将打开自动完成。当然,在该领域内必须有一些价值,否则不会执行搜索。

但是你说你不想要搜索机制。然后自动完成是您的错误小工具。也许找你找组合框

http://jqueryui.com/autocomplete/#combobox

+0

他提到源代码带有'$ .ajax',所以看起来他想要自动完成功能......但是也希望菜单在'click'上打开......在这种情况下,您可以将'click '触发'keydown'的事件,并且如果输入的值与已经查询的值相同,则不会进行额外的搜索,它将只显示相同的菜单...这似乎是他的所需的功能 – tomaroo

+0

我试着触发keydown,但仍然没有菜单。还有什么tomaroo说的是我需要的功能。 – rasmusx

0

您可能需要针对可能隐藏列表中的其他事件自动完成打,但这应该工作:

$(".searchBox").click(function() { 
    $('.ui-autocomplete').show(); 
}); 
+0

这将工作,但我不喜欢这种黑客。如果有人知道,原生解决方案会更好。不管怎么说,还是要谢谢你! :) – rasmusx

+0

你可以尝试手动触发自动完成事件,看看你是否得到你需要的东西,但我不认为他们中的任何人都会打开菜单。祝你好运! – tomaroo