如何找不到结果,如何至少在JqueryUI自动完成面板中显示一个项目

时间:2010-08-02 10:36:49

标签: jquery jquery-ui jquery-ui-autocomplete

我试图在找不到匹配项时强制jqueryUI自动完成的面板/列表至少显示默认项(例如“添加新项”)。该项必须能够与某些事件处理程序绑定。

到目前为止,我已经尝试通过添加伪AC面板来解决这个问题,当发现隐藏真正的AC面板时。

我也想知道是否有可能动态更新“source”(在jqueryui.autocomplete的选项中),将项目插入数据集,这样无论文本框中的任何类型都会被检测为匹配,因此显示。 (对不起,这个部分很难解释)。

有没有更好的方法来实现这一目标?

2 个答案:

答案 0 :(得分:0)

您可以覆盖_renderItem函数并自己显示并添加“添加新项目”文本。

类似这样的事情:(警告未经测试)

$('#yourinputelementid').data( "autocomplete" )._renderMenu: function( ul, items ) {
        var self = this;
        $.each( items, function( index, item ) {
            self._renderItem( ul, item );
        });
        var newitem = $( "<li>Add New Item</li>");
        newitem.click(function(event) {
            alert("newitem test");
        });
        self.append(newitem);
    }
.data( "autocomplete" )._renderItem = function( ul, item ) {
    return $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
        .appendTo( ul );
};

see here

答案 1 :(得分:0)

我参与了使用远程数据源的工作。 (http://jqueryui.com/demos/autocomplete/#remote

当没有找到结果时,只需通过ajax(默认项目,来自服务器)传递一个项目。

解决!