0

私の KendoUI Autocomplete の例は、Chrome では機能しますが、Firefox では機能しません。

「watford」などの町の名前を入力すると、結果がクロムで表示されます。

FireBug を使用すると、有効な JSON 結果を返していることがわかりますが、「TypeError: e is undefined」というエラー メッセージが表示されます。

http://jsfiddle.net/franH/znkV3/14/

var app = new kendo.mobile.Application(document.body, {

transition: 'slide'
});

$(document).ready(function() {
$("#autoComplete").kendoAutoComplete({
    minLength: 7,
    dataTextField: "title",
    filter: "contains",
    placeholder: "Select town...",
    animation: {
        open: {
            effects: "fadeIn",
            duration: 2000,
            show: true
        }
    },

    close: function(e) {
        var str1 = "Dropdown Item Selected:" + " " + e.item;
        alert(str1);
    },
    dataSource: new kendo.data.DataSource({
        transport: {
            read: {
                url: "http://api.geonames.org/wikipediaSearchJSON",
                data: {
                    q: function() {
                        return $("#autoComplete").data("kendoAutoComplete").value();
                    },
                    maxRows: 10,
                    username: "pete"

                }
            }
        },
        schema: {
            data: "geonames"
        }
    }),
    change: function() {
        this.dataSource.read();
    }
    })
});
4

3 に答える 3

1

e.item私が見る唯一の問題は、closeイベントのようなものがないということです。オートコンプリートの値を取得するには、valueメソッドを使用します。

于 2012-12-05T20:24:22.517 に答える
1

こんにちは、 Same origin policyで許可されていない別のドメインからjsonをリクエストしています。ただし、デフォルトでは Chrome はこれを気にせず、これが引き続き機能する理由です。

ユーザーにブラウザ設定の変更を強制することはできないため、jsonpエンドポイントまたはそれをサポートする別のサービスを検索することをお勧めします。

于 2012-12-05T21:23:09.713 に答える
0

次の行を追加して、FireFoxで動作するようにしました

datatype: "jsonp",

フィドルの例を更新しました: http://jsfiddle.net/franH/znkV3/15/

var app = new kendo.mobile.Application(document.body, {
  transition: 'slide'
});

$(document).ready(function() {
  $("#autoComplete").kendoAutoComplete({
    minLength: 7,
    dataTextField: "title",
    filter: "contains",
    placeholder: "Select town...",
    animation: {
        open: {
            effects: "fadeIn",
            duration: 2000,
            show: true
        }
    },

    close: function(e) {
        var str1 = "Dropdown Item Selected:" + " " + e.item;
        alert(str1);
    },
    dataSource: new kendo.data.DataSource({
        transport: {
            read: {
                url: "http://api.geonames.org/wikipediaSearchJSON",
                dataType: "jsonp",
                data: {
                    q: function() {
                        return $("#autoComplete").data("kendoAutoComplete").value();
                    },
                    maxRows: 10,
                    username: "pete"

                }
            }
        },
        schema: {
            data: "geonames"
        }
    }),
    change: function() {
        this.dataSource.read();
    }
  })
});
于 2012-12-06T12:05:55.280 に答える