0

_renderItemを使用してオートコンプリートドロップダウン応答を変更することについてのSOの回答をたくさん読んだので、それらからいくつかのコードをコピーしました。しかし、それは機能せず、理由がわかりません。

以下のコードは、簡略化された概念テストです。特定の大都市に入るとき、(geonames.orgからの)都市の応答を変更し、その都市の自治区/地域である応答を提供したいと思います。コンセプトテストでは、「ニューヨーク」を「ブロンクス、ニューヨーク、ブロンクス郡、ニューヨーク」に変更し、ブロンクスと既存のデータ要素のテキスト文字列を使用します。これは最終的にはより複雑になりますが、最初に基本を理解したいと思います。

Geonames.orgは、最初の数文字が入ると「ニューヨーク」を提供しますが、オーバーライドの変更は発生せず、アラートは発生しません。また、Firebugエラーが発生します-ReferenceError:item is not defined})。data( "item.autocomplete"、item)._ renderItem =多くの例で.data( "item.autocomplete"、item)が表示されますが、これはエラーが発生し、変更をいじるとエラーが変わるだけです。ここに私が理解できないことがあります。少なくとも2つの症状が発生します。Firebugが定義されていないエラーと、ifステートメントが実行されていないという事実です。

コードは次のとおりです。何を変えるべきですか?

$("#city3").autocomplete({
    source: function (request, response){
        //some lines omitted
        $.ajax(
            success: function (data){
                response( $.map(data.geonames, function (item){
                    return {
                        label: item.name + (item.adminName2 ? ", " + item.adminName2 : "") + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                        value: item.name + (item.adminName2 ? ", " + item.adminName2 : "") + (item.adminName1 ? ", " + item.adminName1 : ""),
                        county: item.adminName2
                        }
                    }));
            }
        //some lines omitted
}).data("item.autocomplete", item)._renderItem=
    function(ul,item){
    //simple test
        if(item.label=="New York"){
            alert("NYC triggered");
            var replaceItem = $("<li></li>")
                .data("item.autocomplete", item)
                .append("<a>"+"Bronx"+item.label+"Bronx County"+item.adminName1+"</a>");
                return replaceItem.appendTo(ul);
        }else{
        return item.label;
        }
    };
4

0 に答える 0