我正在使用JQuery UI的自动完成功能将用户列表加载到自定义控件中,并将其显示在常规建议列表中。在页面加载时,我正在调用此字段的search()方法,以使用一些初始数据填充表单。
问题是页面加载事件显示建议列表,以及填充自定义控件。如何仅为第一个查询禁用建议列表?
我尝试过修补各种方法的猴子,他们要么打破要么什么都不做。
当然,另一种方法是在函数调用上设置超时以关闭它,但这会产生一个我想避免的丑陋闪烁。
答案 0 :(得分:1)
最后,我覆盖了Autocomplete的_suggest方法,如下所示:
suggest = function(items) {
ul = this.menu.element.empty().zIndex( this.element.zIndex() + 1 );
this._renderMenu(ul, items);
this.menu.deactivate();
this.menu.refresh();
/* these four lines are the difference between regular autocomplete and this autocomplete */
if (!this.first)
ul.show();
else
this.first = false;
this._resizeMenu();
args = {
of: this.element
}
ul.position($.extend(args, this.options.position));
if (this.options.autoFocus)
this.menu.next(new $.Event("mouseover"));
/* initialisation*/
field.autocomplete().data('autocomplete').first = true;
field.autocomplete().data('autocomplete')._renderItem = renderItem;
field.autocomplete().data('autocomplete')._suggest = suggest;
这不是最优雅的解决方案,但它确实有效。