2

メインの ASP MVC 3 レイアウト ページに、これと他のいくつかの奇妙なエラー メッセージが表示されます。

次のスクリプトを使用しています

<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.8.3.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/typeahead.js")" type="text/javascript"></script>

そして、 typehead.jsをナビゲーション バーで動作させようとしています。以下は、現在私のマシンにあるコードです。ある時点でこれが機能していましたが、同僚と同期した後、先行入力検索が機能しなくなり、問題を追跡できませんでした。

以下のコードの最初の行で、次のエラーが発生します

Uncaught TypeError: Cannot read property 'Constructor' of undefined

protoype.blurただし、関数をコメントアウトすると、このエラーが発生します

Uncaught TypeError: Object [object Object] has no method 'typeahead' 

関数を指す$('.AgentSearch .typeahead).typeaheadもの。これに何時間もこだわっていますが、どんな助けでも大歓迎です。ありがとう

        // Workaround for bug in mouse item selection
        $.fn.typeahead.Constructor.prototype.blur = function () {
            var that = this;
            setTimeout(function () { that.hide() }, 250);
        };

        $('.AgentSearch').typeahead({
            source: function (term, process) {
                var url = '@Url.Action("GetAgents", "Agent")';
                var agents = [];
                map = {};
                return ($.getJSON(url, { term: term }, function (data) {
                    $.each(data, function (i, item) {
                        map[item.Name] = item;
                        agents.push(item.Name);
                    });
                    process(agents);
                }));
            },
            highlighter: function (item) {
                var p = map[item];
                var display = ''
                             + "<div class='typeahead_wrapper'>"
                             + "<div class='typeahead_labels'>"
                             + "<div class='typeahead_primary'>" + p.Name + "</div>"
                             + "<div class='typeahead_third'><i>LastFour:</i> " + p.LastFour + "</div>"
                             + "</div>"
                             + "</div>";
                return display;
            },
            updater: function (item) {
                window.location.href = ("/Monet/Agent/Details/" + map[item].SymetraNumber);
            }
        });

これが私がこれにバインドしている検索ボックスです

            <form class="navbar-search pull-left">   
                <input type="text" name="names" value="" id="AgentSearch" class="search-query" data-provide="typeahead" placeholder=" Agent Search"/> 
            </form>

編集

ブラウザによってレンダリングされるスクリプトタグは次のとおりです

<script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery-1.8.3.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui.js" type="text/javascript"></script>
<script src="/Scripts/typeahead.js" type="text/javascript"></script>
4

1 に答える 1

0

タイプアヘッドが定義されていないようです。

タイプアヘッドを拡張しようとしている場合は、次の記事が役立つ場合があります: 文字列ではなくオブジェクトを取得するために、ブートストラップ タイプアヘッドを拡張する

$.fn は常にオブジェクト ('[]') を返します。これが、.prototype.blur をコメントアウトするとエラーが変化する理由ですが、どちらも「typeahead」が存在しないことを示しています。

推測ですが、ライブラリが読み込まれる前にコードが実行されているという同期の問題である可能性があります。

于 2013-09-12T22:35:08.437 に答える