0

私は次のJSを持っています:

  $("#search").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Home/GetCompanyNames",
                    dataType: "json",
                    data: "searchterm=" + request.term,
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.Name,
                                value: item.Name,
                                LogoUrl: item.LogoUrl,
                                InternetName :item.InternetName,
                                Name: item.Name
                            };
                        }));
                    }
                });
            },
          minLength: 1
        }).data("autocomplete")._renderItem = function (ul, item) {
            var innerHtml = '<a href=/Store/'+item.InternetName+'><div class="list_item_container" style="height: 60px;"><div class="image" style="float: left; margin-right: 35px;"><img src="' + item.LogoUrl + '"></div><div class="label">' + item.Name + '</div></div></a>';
            return $("<li></li>")
        .data("item.autocomplete", item)
        .append(innerHtml)
        .appendTo(ul);
        };

    });

これをレンダリングする

ここに画像の説明を入力

ibこれは、この場合のようにテキストボックスに任意の文字を入力したときに表示される提案ドロップダウンです。
すべて正常に動作していますが、ドロップダウンの任意の項目をマウスでクリックすると、アンカーに書かれている URL に移動するという問題が 1 つだけあります。タグ、下にスクロールしていくつかのアイテムでEnterキーを押すと、ドロップダウンのアイテムでEnterキーを押しても現在何もしていないのと同じように動作するようにしたいです。

4

2 に答える 2

3

このjqFAQ.comトピックを見てください。これは、マウス クリックと Enter キーの両方で選択した URL に移動するのに役立ちます。オートコンプリート関連の FAQ もいくつかあります。

于 2012-11-16T12:59:10.190 に答える
0

返されたリスト項目keyupの要素にハンドラーを追加してみてください。a関数を変更することでそれを行うことができるはずです_renderItem

._renderItem = function (ul, item) {
    var div = $('<div />'), //building using DOM elements, rather than HTML string.
        liContainer = div.clone().addClass('list_item_container').css('height', '60px'),
        img = $('<img />').attr('src', item.LogoUrl),
        imgContainer = div.clone().addClass('image').css({
            "float": "left",
            "margin-right": "35px"
        }),
        divLabel = div.clone().addClass('label').text(item.Name),
        a = $('<a />').attr('href', '/Store/' + item.InternetName);
        imgContainer.append(img);
        liContainer.append(imgContainer).append(divLabel);
        a.append(liContainer);
        a.on('keyup', function (e) { //add keyup handler to navigate to new URL on [Enter]
            if (e.which === 13) {
                window.location.href = $(this).attr('href');
            }
        });
    return $("<li></li>")
        .data("item.autocomplete", item)
        .append(a)
        .appendTo(ul);
};
于 2012-11-16T12:48:08.250 に答える