0

このコードスニペットをjQueryUI Autocomplete自分のサイトの関数に使用しています。

$( "#find" ).autocomplete({
            minLength: 1,
            source: function(request, response) {
                        var results = $.ui.autocomplete.filter(locations, request.term);
                        response(results.slice(0, 10));
                    },
            focus: function( event, ui ) {
                $( "#find" ).val( ui.item.value );
                return false;
            },
            appendTo: "#results",
            open: function(){
                var position = $("#results").position(),
                                left = position.left, top = position.top;

                        $("#results > ul").css({left: (left + 15) + "px",
                                                                top: (top + 30) + "px", width: (206) + "px" });
            },

            select: function( event, ui ) {
                $( "#find" ).val( ui.item.value );
                $(":header.title").html(ui.item.value);
                var new_url = ui.item.href; // instead of adding 'statistics', by using location.hash, it wont be necessary unlike using pushState()
                location.hash = new_url;
                return false;
            }
        })
        .data( "autocomplete" )._renderItem = function( ul, item ) {
            return $( "<li></li>" )
                .data( "item.autocomplete", item )
                .append( "<a>" + item.label + "<br />" + item.desc + "</a>" )
                .appendTo( ul );
        };

実際、これは完全に正常に機能し、ここFirefoxに示したサンプルで正確に動作するのとChrome同じように動作します。必要に応じてコピーして変更しただけです。ただし、では、他のブラウザに表示されるはに表示されません。修正から始まるコードは最後の部分、つまりオートコンプリートの提案を追加する部分だと思います。誰かがここで私を助けてくれますか?乾杯!IE9item.descIE9

4

3 に答える 3

0

新しい css クラスを作成して、既存の jquery ui オートコンプリート "position":"absolute" をオーバーライドします

.ui-autocompelte{
"position": "absolute"
....
....
}

新しい CSS クラス

.ui-autocomplete-ie9-fix { position: relative !important; }  

$("#find").autocompelte({ ........ ....... }); の後にこの css クラスを適用します。

if (!$.browser.msie || ($.browser.msie && $.browser.version != 9)) {
        $("ul.ui-autocomplete").addClass("ui-autocomplete-ie9-fix");
    }
于 2013-07-08T06:39:13.887 に答える