10

我正在使用 jquery ui 1.10.3 和 jquery 2.0.3。我正在尝试使用自动完成功能在从自动完成的建议选项中选择一个选项时更改另一个文本框的文本。

下面是我的自动完成功能代码。我确实根据需要得到了结果,但是当我从中选择一个选项时,我得到TypeError: ui.item is undefined错误。

<script language="javascript">
$(document).ready(function(){
    $('#item_code').autocomplete({
    source: "http://localhost/test/item/search_item",
        minLength: 1,
        select: function( event, ui ) {
            $( "#item_description" ).val(ui.item.description );
            return false;
        }
    }).data("ui-autocomplete" )._renderItemData = function( ul, item ) {
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append( "<a>" + item.value + " - " + item.description + "</a>" )
            .appendTo( ul );
    };
});   
</script>

我已经搜遍了网,但我发现我的头撞到了桌子上。任何帮助是极大的赞赏。

4

3 回答 3

15

您应该只需要更改一个数据属性:

.data('item.autocomplete')

被弃用,取而代之的是

.data('ui-autocomplete-item')

从 jQuery UI 1.9 开始,从 jQuery UI 1.10 开始删除

http://jqueryui.com/upgrade-guide/1.10/#re​​moved-item-autocomplete-data-use-ui-autocomplete-item

于 2014-03-27T00:37:53.690 回答
6

我遇到了类似的问题,但这是因为 jQuery 文档现在显示了 jQuery UI 1.10 的用法,而我们的网站仍在使用 jQuery UI 1.8.20。

这最终对我有用。

  .data("autocomplete")._renderItem = function (ul, item) {
      return $("<li>")
      .data("item.autocomplete", item)
      .append("<a>" + item.label + "<br><b>" + item.category + "</b></a>").appendTo(ul);
  };
于 2014-10-14T09:09:29.713 回答
3

原来我必须改变

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

.data( "item.autocomplete", item )

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

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

希望这可以帮助任何遇到 jQuery UI 迁移问题的人

于 2013-09-19T17:30:48.783 回答