Jquery UI自动完成IE 7问题

时间:2012-04-12 01:38:36

标签: jquery-ui

我正在使用jquery UI自动完成功能。它适用于除IE7之外的所有其他浏览器FF,Chrome等。适用于更高版本的IE,但IE7给出以下错误:

SCRIPT3: Member not found.
jquery.min.js, line 2 character 30636

这是我的功能:

   $('input.autocomplete').each( function() {
   var $input = $(this);

   // Set-up the autocomplete widget.
   var serverUrl = $input.data('url');

$(this).autocomplete({
   source: function( request, response ) { 

    var countrySelect = $("#countrySelect").val();

 if($input.attr('id') == 'searchJobPostalCode'){

    countrySelect = $("#searchJobCountrySelect").val();

    }else if($input.attr('id') == 'searchPeoplePostalCode'){

    countrySelect = $("#searchUserCountrySelect").val();

    }
    $.ajax({
                url: serverUrl,
                dataType: "json",
                data: {
                    term: request.term,
                    countrySelect: countrySelect
                },
                success: function( data ) {
                        $input.removeClass( "ui-autocomplete-loading" );
                        response( $.map( data, function( item ) {
                        if(typeof item.companyName != 'undefined'){
                            return {
                                label: item.companyName,
                                value: item.companyName,
                                id: item.companyID
                            }
                    }

                        if(typeof item.locationId != 'undefined'){
                            return {
                                label: item.postalCode +','+item.placeName+','+item.adminName1+','+item.countryCode,
                                value: item.postalCode +','+item.placeName+','+item.adminName1+','+item.countryCode,
                                postalCode: item.postalCode,
                                city: item.placeName,
                                state: item.adminName1,
                                country: item.countryCode
                            }
                    }


                        //to show user alias autocomplete on compose message
                        if(typeof item.userAlias != 'undefined'){
                                    var label1 = item.userAlias;
                                    if(typeof item.city != 'undefined'){
                                        label1 = label1+','+item.city;
                                    }
                                    if(typeof item.state != 'undefined'){
                                        label1 = label1+','+item.state;
                                    }
                                    if(typeof item.country != 'undefined'){
                                        label1 = label1+','+item.country;
                                    }

                            return {
                                label: item.userAlias,
                                userAlias: item.userAlias
                            }
                    }

                    }));
                }
            });
        },
        minLength: 3,cacheLength:0,keyDelay:900,
        select: function( event, ui ) {

        $("#companyId").val(ui.item.id);

        if(typeof ui.item.userAlias != 'undefined'){
            $(".toUser").val(ui.item.userAlias);
        }

        if(typeof ui.item.postalCode != 'undefined'){
                $("#postalCode").val(ui.item.postalCode);
                $("#city").val(ui.item.city);
                $("#state").val(ui.item.state);
                $("#country").val(ui.item.country);


                    if($input.attr('id') == 'searchJobPostalCode'){

                                $("#searchPostalCodeJobsSearch").val(ui.item.postalCode);
                                $("#searchCityJobsSearch").val(ui.item.city);
                                $("#searchStateJobsSearch").val(ui.item.state);
                                $("#searchCountryJobsSearch").val(ui.item.country);

                    }else if($input.attr('id') == 'searchPeoplePostalCode'){

                                $("#searchPostalCodePeople").val(ui.item.postalCode);
                                $("#searchCityPeople").val(ui.item.city);
                                $("#searchStatePeople").val(ui.item.state);
                                $("#searchCountryPeople").val(ui.item.country);

                    }


        }
        },
                change: function( event, ui ) {
                if($(this).attr('id') !='companyName'){
                        if ( ui.item == null) {
                                valid = false;
                            }else{
                                valid = true;
                            }
                            if ( !valid ) {
                                // remove invalid value, as it didn't match anything
                                $( this ).val( "" );
                                select.val( "" );
                                input.data( "autocomplete" ).term = "";
                                return false;
                            }
                        }
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
            $( this ).removeClass( "ui-autocomplete-loading" );

        }
    });

});

我尝试调试并在第$(this).autocomplete({

行显示错误

有什么想法吗?提前致谢

3 个答案:

答案 0 :(得分:6)

看起来问题出在我的操作系统上。我已经安装了Windows 8消费者预览版并使用IE7兼容性的开发工具运行IE。它适用于Windows 7.谢谢。

答案 1 :(得分:0)

我的猜测是其中一个脚本没有正确加载。这件事发生在我身上,有jquery和IE 7.这就是我解决这个问题的方法:

在HTML中,在所有脚本标记之前添加:

<script type="text/javascript"></script><!--this is here because of an IE bug-->

当我在jquery.min.js的标记之前包含该行时,问题就消失了。

IE7令人沮丧。

答案 2 :(得分:-1)

我决定改变ui版本。现在我使用1.9.1.custom.min.js(之前是jquery UI 1.8),它兼容IE7。我使用jquery v1.7.2