8

jqueryUIオートコンプリートを使用しています。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({

何か案が?前もって感謝します

4

3 に答える 3

6

問題は私のOSにあるようです。私はWindows8コンシューマープレビューをインストールし、IE7互換の開発ツールを使用してIEを実行していました。それはウィンドウズ7で動作します。ありがとう。

于 2012-04-12T23:14:33.920 に答える
0

私の推測では、スクリプトの1つが正しくロードされていません。これは、jqueryとIE 7で一度発生しました。これが、この問題を解決した方法です。

HTMLで、すべてのスクリプトタグの前に、次を追加します。

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

jquery.min.jsのタグの前にその行を含めると、問題は解決しました。

IE7は欲求不満です。

于 2012-04-12T02:11:39.577 に答える
-1

UIバージョンを変更して解決しました。現在、1.9.1.custom.min.js(以前はjquery UI 1.8でした)を使用しており、IE7との互換性で動作します。jqueryv1.7.2を使用しています

于 2015-11-30T14:31:00.647 に答える