0

要約すると、追加されたすべてのアイテムのカテゴリは、アイテムの名前とともに保存する必要があります。これにより、このカテゴリ情報が送信時に送信されるため、正しいクエリが使用されます (正しいテーブルに関連する)。アイデア?

私がする必要があるのは、ユーザーが探しているものを (オートコンプリートのドロップダウンから) 選択すると、カテゴリ情報 (カテゴリの名前) もどこかに記録されることです。

ユーザーが検索を押すと、探しているフレーズとカテゴリ名も送信されるという考え方です。理由: 車に関する情報、動物に関する情報、エイリアンに関する情報を含む 3 つのテーブルがあります。関連するテーブルが (カテゴリ情報から) 既に決定されている場合は、3 つすべてをクエリする必要はありません。

3つすべてを検索する際の問題は、スポンジボブという名前のエイリアンや動物などがいる可能性があることです.

扱っているコードは次のとおりです (jQueryUI Web サイトから)。

$.widget( "custom.catcomplete", $.ui.autocomplete, {
    _renderMenu: function( ul, items ) {
        var self = this,
            currentCategory = "";
        $.each( items, function( index, item ) {
            if ( item.category != currentCategory ) {
                ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
                currentCategory = item.category;
            }
            self._renderItem( ul, item );
        });
    }
});

私の考えでは、select イベントの下で、category complete 関数内で次のようになります。

$(function() {
        $( "#search" ).catcomplete({
            delay:0,
            source: "query/encode-json.php?term="+ $("#search").val(),
            select: function(event, ui){

            }
        });     
    });

選択したアイテムに関連付けられているカテゴリは、どこかに送信/保存できます。私が抱えている問題は、ウィジェット関数 (item.category) でこの情報を取得できることですが、この情報は選択イベントでは (直接) 利用できません。これは、ウィジェットがリストにデータを入力するだけで、選択イベントを処理しないので理にかなっていますが (私は考えています)、何らかの方法でこの情報にアクセスできるようにする必要があります。私の考えは、インデックスを見つけてそこから逆方向に作業することでしたが、うまくいかないようです。もう 1 つのオプション (より基本的なもの) は、ウィジェットがループされるたびに、カテゴリ名が li 要素のタイトル フィールドに追加されるというものです。

私は何時間も試してきましたが、どちらのソリューションでもどこにも行きません。

あなたが流すことができるかもしれない光をありがとう:)

4

1 に答える 1

0

それを行う方法を考え出した。これは私が最終的に得たコードです:

$(".ui-menu-item").live('click', function(e) {
        cat = $(this).prevAll(".ui-autocomplete-category:first").text();
    });

最初は、ライブ側が必要だと気づかなかったため、クリック側に問題がありました。これを試していました:

$(".ui-menu-item").click(function () {

    });

つまり、検索結果の 1 つが選択 (クリック) されると、上記のカテゴリのテキストが取得され、cat 変数に割り当てられます。この変数は、検索をやり直す検索ページに送信するように設定済みです。

 function test(){
                        var i = document.createElement('input');
                        i.type = 'hidden';
                        i.name = 'cat';
                        i.value = cat;
                        document.getElementById("searchForm").appendChild(i);
                    }

出典:jqueryは、クラスで最も近い以前の兄弟を見つけます

于 2012-08-07T09:25:30.310 に答える