密钥上的jQuery UI自动完成?

我正在使用jQuery UI库的自动完成function。 我在网页上有两个表单字段 – 一个是内部搜索,另一个是通过REST API搜索我公司在第三方网站上管理的内容。

这应该是应该的 – 如果我有两个表单字段彼此相邻,我可以输入任一个并获得下面该数据源的自动完成结果。

但是,我被要求做的是将两个字段组合成一个“主”搜索字段并隐藏两个单独的字段。 它将搜索两个数据源以查找用户的输入,并在字段下方的单独ui-autocomplete框中显示结果。

我的想法是,如果我可以将自动完成的触发器方法从“焦点”更改为“键盘”,它将非常好地工作,或者如果我可以“伪造”焦点触发器而不将光标发送到隐藏字段。

有什么想法吗?

更新:

这是我一直在尝试的代码,但它不起作用。 这就是让我觉得自己依赖焦点事件的原因。

$(function(){ // run autocomplete on form fields searchAutocomplete('/support/results_json/','#keywords'); searchAutocomplete('/support/zdresults_json/','#zd_search'); //$('#ee_searchform').hide(); // will need this later //$('#zd_searchform').hide(); // will need this later $('
Search Support
').insertAfter('#zd_searchform'); $('#support_keywords').keyup(function() { var value = $('#support_keywords').val(); $('#keywords').val(value); $('#keywords').keyup(); }); });

所以你可以看到,我采用HTML包含的两个表单字段,并确保它们调用工作自动完成function。 然后我使用jQuery向DOM添加另一个表单,当它获得一个keyup时,它将其内容添加到其他字段之一,并为该字段提供一个keyup。 但是,这并不会调用自动完成function。

非常感谢。

我在这里首先想到的是隐藏原始字段(如果需要,可以在焦点上)并在单个焦点事件之前或与之结合注入一个新字段,然后建议您管理自动完成源:

 source: function(request, response) { // do both your ajax calls here and combine your results prior to providing to your field } 

那么,您可以使用以下组合处理结果:

 source: function(request, response) {response(rows);},//where rows is an array of results search:function(event, ui){}, focus:function(event, ui){}, open:function(event, ui){}, 

最后

 select: function(event, ui) {}//handle what to do with the selection of/from the results list 

这有助于避免任何奇特/复杂的条目状态管理,然后您可以管理结果演示。

编辑:多个ajax concats的示例(非常简单,没有排序等)

看到这个小提琴页面的一些东西(由于json ajax不存在而不能按原样运行但你可以使用它我希望) http://jsfiddle.net/MarkSchultheiss/Z6rVE/

如上所述,它假设一个带有MyCode,Description和SourceTable的json

 [{"MyCode":"code","Description":"my desc","SourceTable":"mysource"},{"MyCode":"code","Description":"my desc","SourceTable":"mysource"}] 

你只需要每个来源说出SourceTable(或添加你可能需要的新东西)