2011-12-08 9 views
0
$("#Auto").autocomplete({ 
minLength: 4, 
type: 'GET', 
source: function (request, response) { 
    var term = request.term; 
    if (term in cache) { 
     response(cache[term]); 
     return; 
    } 
    var url = '<%=Url.Action("AutoComplete", "Thing", new {area = "Admin"}) %>' + "?terms=" + request.term; 
    lastXhr = $.getJSON(url, request, function (data, status, xhr) { 
     cache[term] = data; 
     if (xhr === lastXhr) { 
      response(data); 
     } 
    }); 
} 
}) 
    .data("autocomplete")._renderItem = function (ul, item) { 
      return $("<li></li>") 
.data("item.autocomplete", item) 
    .append("<a> Thingy1: " + item.Prop1 + " Thingy2: " + item.Prop2 + "<br>" + "</a>") 
    .appendTo(ul); 
     }; 

#Auto、Prop1、Prop2が存在し、Thingというコントローラがあるとします。これは、別のページ上で作業を行いますが、何らかの理由で私は、ページ上でこのエラーが出る:このオートコンプリートコード(JQuery-UIオートコンプリート)の問題

$("#Auto").autocomplete({minLength: 4, type: "GET", source: function (request, response);var term = request.term;if (term in cache) {response(cache[term]);return;}var url = '<%=Url.Action("AutoComplete", "Thing", new {area = "Admin"}) %>' + "?terms=" + request.term;lastXhr = $.getJSON(url, request, function (data, status, xhr) {cache[term] = data;if (xhr === lastXhr) {response(data);}});}}).data("autocomplete") is undefined 

私は次のファイルがロードされています:

jquery-ui-1.8.2.custom.min.js 
jquery-1.4.2.min.js 
jquery.autocomplete.pack.js 
jquery.ajaxQueue.js 
jquery.bgiframe.min.js 
thickbox-compressed.js 
jquery-ui-1.8.2.custom.css 
jquery-require.1.1.packed.js 

プラスいくつかの他のカスタムのものを。

紛失しているものがありますか、あまりにも多くのファイルが含まれていますか?

答えて

1

まず、あなたのコード(ペーストされた怠惰なカット&のように見える)を掃除し、何をしようとしているのかを説明することが役に立ちます。

しかし、一見、私はあなたのエラーが言う見ることができます:

.dataセクション(「オートコンプリート」)は、「オートコンプリート」と呼ばれるいかなる要素が上に存在しないことを暗示する

を定義されていませんページ。 後で使用するためにオートコンプリートコントロールに含まれるデータを保存しようとしている場合

.data("#Auto")

.data("autocomplete")

を変更してみてください。

+0

です。データ(「オートコンプリート」)は、このクラスの要素を認識します:ui-autocomplete-input? – tehdoommarine

+0

いいえ '(" autocomplete ")'は '要素を探すセレクタです。そのクラスが必要なら '( '.ui-autocomplete-input')'を使う必要がありますが、それがあなたが望むものではないかと思います。あなたは何をしようとしているのか最初に非プログラミング言語で説明しようとするべきです。 – Terry

+0

基本的なjQueryセレクタの私の説明が見つかりました[ここ](http://stackoverflow.com/questions/7664384/whats-the-difference-in-jquery-selectors/7664407#7664407) – Terry

0

テリーの反応が間違っていると私は恐れています。あなたのコードは要素セレクタではありません。 data関数は、HTML要素にリンクされているデータオブジェクトを取得するために使用されます。あなたの場合は、idがAutoの要素にリンクされているデータを取得しています。

var data = $("#Auto").data("autocomplete"); 
// data is now an object stored by the autocomplete plugin. 

あなたの問題は、キーautocompleteのデータが見つかりませんでした。あなたのオートコンプリートスクリプトが自分の仕事をしていない限り、どうなるかは分かりません。

関連する問題