将JQueryUI的自动完成设置为仅在第一次以自定义方式呈现项目

时间:2011-10-06 03:19:44

标签: javascript jquery jquery-ui

我正在使用JQuery UI的自动完成功能将用户列表加载到自定义控件中,并将其显示在常规建议列表中。在页面加载时,我正在调用此字段的search()方法,以使用一些初始数据填充表单。

问题是页面加载事件显示建议列表,以及填充自定义控件。如何仅为第一个查询禁用建议列表?

我尝试过修补各种方法的猴子,他们要么打破要么什么都不做。

当然,另一种方法是在函数调用上设置超时以关闭它,但这会产生一个我想避免的丑陋闪烁。

1 个答案:

答案 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;

这不是最优雅的解决方案,但它确实有效。