【发布时间】:2011-12-15 22:07:29
【问题描述】:
我正在使用 jQuery UI 库的 autocomplete 功能。我在网页上有两个表单域 - 一个是内部搜索,另一个是搜索我公司通过 REST API 在第三方网站上管理的内容。
这可以正常工作 - 如果我有两个表单字段并排放置,我可以输入其中一个并在下面获取该数据源的自动完成结果。
不过,我被要求做的是将这两个字段合并为一个“主”搜索字段并隐藏两个单独的字段。它会在两个数据源中搜索用户的输入,并将结果显示在字段下方单独的 ui-autocomplete 框中。
我的想法是,如果我可以将自动完成的触发方法从“focus”更改为“keyup”,它会很好地工作,或者如果我可以“伪造”焦点触发器而不将光标发送到隐藏字段。
对此有什么想法吗?
更新:
这是我一直在尝试的代码,但它不起作用。这就是让我认为我依赖于焦点事件的原因。
$(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
$('<form id="support_search" class="group" method=""><fieldset><legend>Search Support</legend><ol><li><label for="support_keywords">Keywords</label><input type="search" value="" name="support_keywords" id="support_keywords" /></li><li class="submit"><input type="submit" name="support_submit" id="support_submit" value="Search" /></li></ol></form>').insertAfter('#zd_searchform');
$('#support_keywords').keyup(function() {
var value = $('#support_keywords').val();
$('#keywords').val(value);
$('#keywords').keyup();
});
});
所以您可以看到,我采用 HTML 包含的两个表单字段,并确保它们调用工作的自动完成功能。然后我使用 jQuery 向 DOM 添加另一个表单,当它获得一个 keyup 时,它会将其内容添加到其他字段之一,并为该字段提供一个 keyup。不过,这不会调用自动完成功能。
非常感谢。
【问题讨论】:
-
“焦点”触发器是什么意思?建议已显示在
keyup
标签: jquery jquery-ui jquery-ui-autocomplete