【问题标题】:Jquery Ui AutoComplee select ui.item is undefinedJquery Ui AutoComplee 选择 ui.item 未定义
【发布时间】:2013-10-16 15:57:27
【问题描述】:

我的页面上有一个自动完成功能,可以正确获取和显示数据。 数据:Object { custId="CUST2", invoiceNo="B1"} jQuery v1.8.2 分钟 jQuery UI - v1.10.3

$("#invoiceNo").autocomplete({
        source : function(request, response) {
            if($.trim($(this.element).val())==""){
               return;
            }
            $.ui.autocomplete.prototype._renderMenu = function(ul, items) {
                var self = this;
                ul.append("<li><table width='100%' class='table table-condensed table-bordered' style='margin-bottom:0px;'><tr><td width='20%'><b>Invoice No</b></td><td width='20%'><b>Customer ID</b></td></tr></table></li>");
                $.each(items, function(index, item) {
                    self._renderItem(ul, item);
                });
            };
            $.getJSON("getInvoiceList.html", {
               query : $.trim($(this.element).val()),
                type:"del",
            }, response).error(function(xhr, ajaxOptions, thrownError) {

            }); 
        },
        open: function() { 
            // After menu has been opened, set width
            $('.ui-menu').width(700);
        },
        minLength : 1,
        select : function(event, ui) {
            alert(ui.item);
            $("#invoiceNo").val(ui.item.invoiceNo);
            //setCustomerDetails(ui.item.number);

            getInvoiceDetailForReturn(ui.item.invoiceNo);
            return false;
        },error: function (xhr, ajaxOptions, thrownError) {
            $.jGrowl(xhr.responseText); 
        }
    }).data("ui-autocomplete")._renderItem = function(ul, item) {               
         return $("<li></li>").data("item.autocomplete-item", item) .append("<a><table width='100%' class='table table-condensed table-hover' style='margin-bottom:0px;'><tr><td width='20%'>" + item.invoiceNo + "</td><td width='20%'>"+item.custId+"</td></tr></table></a>").appendTo(ul);
    };

首先我有错误$(...).autocomplete(...).data(...) is undefined 它解决了这个问题

原来我必须改变

data("Autocomplete" )._renderItemData = function( ul, item ) {

.data( "item.autocomplete", item )

 data("ui-autocomplete" )._renderItem = function( ul, item ) {

.data( "item.autocomplete-item", item )

所以它没有得到 ui.item 对象...

【问题讨论】:

  • 我不明白你的问题。究竟是什么问题?
  • @Sébastien ui.item 未定义
  • @Sébastien 选择中的警报未定义
  • Hello @Sébastien Bro 当我使用 jquery-ui-1.9.2 时,自动完成功能正常工作。但是,如果我打开对话框,则在关闭对话框后制作两个 ui-widget-overlay div,删除一个 ui-widget-overlay div,但剩余一个。意味着我的问题是,如果我的对话框属性 Modal 为 True,则关闭对话框后无法删除模态属性假。

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


【解决方案1】:

switching to jQuery-UI 1.10 时我自己也遇到过这个问题。您必须将item.autocomplete-item 替换为ui-autocomplete-item

因此,只取代码块的最后 3 行,就变成了:

}).data("ui-autocomplete")._renderItem = function(ul, item) {               
  return $("<li></li>").data("ui-autocomplete-item", item) .append("<a><table width='100%' class='table table-condensed table-hover' style='margin-bottom:0px;'><tr><td width='20%'>" + item.invoiceNo + "</td><td width='20%'>"+item.custId+"</td></tr></table></a>").appendTo(ul);
};

这里又是upgrade guide的链接。

【讨论】:

  • 在我的页面中仅在一个自动完成中添加 ui-autocomplete,因此它现在无法正常工作 谢谢@Sebastien
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 2012-05-23
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 2010-12-28
  • 2011-08-02
相关资源
最近更新 更多