Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryui->;自动完成->;选择时->;ui项未定义_Jquery_Undefined_Jquery Ui Autocomplete - Fatal编程技术网

jqueryui->;自动完成->;选择时->;ui项未定义

jqueryui->;自动完成->;选择时->;ui项未定义,jquery,undefined,jquery-ui-autocomplete,Jquery,Undefined,Jquery Ui Autocomplete,我的页面上有一个自动完成器,可以正确地获取和显示数据。。。。当它停止正常工作时,选择事件 $("#fld_search1").catcomplete({ delay: 50, minLength: 2, open: function(e, ui){ if(searching) return; //console.log($(this).data('catcomplete'));

我的页面上有一个自动完成器,可以正确地获取和显示数据。。。。当它停止正常工作时,选择事件

$("#fld_search1").catcomplete({
        delay: 50,
        minLength: 2,
        open: function(e, ui){
            if(searching) return;
            //console.log($(this).data('catcomplete'));
            var acData = $(this).data('catcomplete');
           var styledTerm = '<strong>%s</strong>'.replace('%s', acData.term);


            acData.menu
                .element
                .find('li a')
                .each(function() {
                    var me = $(this);
                    me.html( me.text().replace(acData.term, styledTerm) );
                });
            //return match.replace(new RegExp("("+keywords+")", "gi"),'<i>$1</i>');
        },
        select: function(event, ui) {
            var I = ui.item;
            top.console.log(ui);
            $("#fld_search1" ).catcomplete("close");

            $('#fld_search1').val(I.name);
            window.location = '/podjetje/'+I.value+'.html';
            //$('#frm_company_id').val(I.value);
            return false;
        },
        source: function( request, response ) {


            search_term = request.term;

            if ( search_term in cache ) {
                response( cache[ tesearch_termrm ] );
                return;
            }


            var suggest_url = "/companies/find_company.json";


            $.ajax({
                url: suggest_url,
                dataType: "json",
                type : "POST",
                data: {
                    owner: request.term
                },
                success: function( data ) {
                    response( $.map( data, function( item ) {
                        var alabel = item.label.replace(
                                new RegExp('(' +
                                    $.ui.autocomplete.escapeRegex(request.term) +
                                    ')'), 
                            "<b>$1</b>" );
                        return {
                            value: item.value,
                            label: item.label,
                            name: item.name,
                            category: item.category
                        }
                    }));
                }
            });


        }
    });
$(“fld#u search1”).catcomplete({
延误:50,
最小长度:2,
打开:功能(e、ui){
如果(搜索)返回;
//console.log($(this.data('catcomplete'));
var acData=$(this).data('catcomplete');
var styledTerm='%s'.replace('%s',acData.term);
acData.menu
.元素
.find('li a')
.each(函数({
var me=$(此);
html(me.text().replace(acData.term,styledTerm));
});
//返回match.replace(newregexp(“(“+keywords+”)”,“$1”);
},
选择:功能(事件、用户界面){
var I=ui.item;
top.console.log(ui);
$(“fld#u search1”).catcomplete(“close”);
$('fld#u search1').val(I.name);
window.location='/podjetje/'+I.value+'.html';
//$('frm#u company_id').val(I.value);
返回false;
},
来源:功能(请求、响应){
search_term=request.term;
if(在缓存中搜索搜索项){
响应(缓存[tesearch_termrm]);
返回;
}
var suggest_url=“/companys/find_company.json”;
$.ajax({
url:建议url,
数据类型:“json”,
类型:“POST”,
数据:{
所有者:request.term
},
成功:功能(数据){
响应($.map)(数据、功能(项){
var alabel=item.label.replace(
新的RegExp('('+
$.ui.autocomplete.escapeRegex(request.term)+
')'), 
"$1" );
返回{
值:item.value,
标签:item.label,
名称:item.name,
类别:item.category
}
}));
}
});
}
});
所以它没有得到ui对象

如果我使用top.console.log(ui),我会得到一个带有一个属性->项的对象。。。这是未定义的。。。所以如果我记录I值,我会得到未定义的。。。这怎么可能

这在1.9.1中


如果我更改它并使用1.9.2,则在鼠标悬停时菜单始终关闭。。。如果我使用自动对焦,它甚至不会打开

今天,我在未定义的
ui.item
属性上遇到了同样的问题。经过一些调试,我找到了解决方案。jQueryUI团队稍微更改了示例代码。查看示例源代码时,您将看到:

<script>
    $.widget( "custom.catcomplete", $.ui.autocomplete, {
        _renderMenu: function( ul, items ) {
            var that = this,
                currentCategory = "";
            $.each( items, function( index, item ) {
                if ( item.category != currentCategory ) {
                    ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
                    currentCategory = item.category;
                }
                that._renderItemData( ul, item );
            });
        }
    });
    </script>

$.widget(“custom.catcomplete”,$.ui.autocomplete{
_renderMenu:功能(ul,项目){
var=这个,
currentCategory=“”;
$。每个(项目、功能(索引、项目){
如果(item.category!=当前类别){
ul.追加(“
  • ”+item.category+“
  • ”); currentCategory=item.category; } 即._renderItemData(ul,项目); }); } });
    带有
    的行,即。renderItemData(ul,项目)过去是(在1.9之前的版本中)
    那个。另见:。但这在报告中没有提到

    因此,我将插件改为使用
    \u renderItemData(…,…)
    函数,解决了这个问题


    希望这有帮助

    对你来说,你的回答节省了我的时间。我刚刚将jQueryUI从1.8.12升级到1.10.3,选择函数在
    UI.item
    中得到
    undefined
    。将
    that.\u renderItem(ul,item)
    更改为
    that.\u renderItemData(ul,item)
    后,它又开始工作了。