5

以下のフィドルを通過してください。ボックスで選択した製品のIDを取得fcbkcompleteし、テキストボックスにカンマ区切りの値として表示しようとしていますid="interest"。それを実現する関数を作成しましたが、機能しませんでした。この関数は、最初の値のIDを追加し、複数選択ボックスに追加された他の値のIDを取得しません。

http://jsfiddle.net/balac/xDtrZ/1/

追加しましjson.txtた。このようなデータが含まれています

[{"key":"2", "value":"Canon Powershot "},{"key":"3", "value":"Fastrack Bag"},{"key":"4", "value":"Iphone 4 "},{"key":"5", "value":"Levis Jeans"},{"key":"7", "value":"Indig"},{"key":"8", "value":"Dashing Cars"},{"key":"9", "value":"dsdas"},{"key":"10", "value":"fsfs"}]

上記のjson値キーは、テキストボックスにコンマ区切りの値として表示するIDです。valueは、選択のためにドロップダウンに表示される値です。

ドロップダウンで値を選択しているときに、対応するキーをカンマ区切りの値としてテキストボックスに追加します。

問題は、最初に選択したアイテムのキーだけが、関係なくテキストボックスに追加されることです。

具体的であり、すべてを詳細に述べたことを願っています。誰かが何か説明が必要な場合は私に聞いてください私はもっと説明します。

4

2 に答える 2

3

私はあなたのためのより簡単な解決策を見つけたと思います。コメントで述べた問題のために、fcbkcompleteコードを機能させるためにコードを大幅に単純化する必要があったことを覚えておいてください。

$(document).ready(function() {
    $("#select3").fcbkcomplete({
        addontab: true,
        maxitems: 10,
        input_min_size: 0,
        height: 10,
        select_all_text: "select",
        onselect: clicker
    });
});

var clicker = function() {
    var selected = new Array();

    $('option', this).each(function() {
        selected.push($(this).val());
    });

    $('#interest').val(selected.join(', '));
};

ここで実際の動作を確認してください。

注:実際に正しく機能<option>'sさせるには、selectリストに手動で追加する必要がありました。fcbkcompleteしかし、それでも、私のロジックは関係なく機能するはずです。

また、fcbkcomplete明らかに動的に<option>'sidを次のようなものに変更opt_vaQDzJU37ArScs818rc8HUwz9gm1wypPするため、代わりに値を使用する必要がありました。値の代わりにIDを使用することに完全に固執している場合は、その回避策があります。

私のポイントを説明するために、次のように各オプションのループを変更します。

$('option', this).each(function() {
    for (var i = 0; i < this.attributes.length; i++) {
        var pair = this.attributes[i].name + ': '
            + this.attributes[i].value;
        alert(pair);
    }
    selected.push($(this).val());
});

実行後に属性がどのように終了するかがわかりますfcbkcomplete

最終編集

ローカルホストで設定し、JSON txtファイルを使用した後、私は最終的にあなたが抱えていた問題を再現することができました。重要なのは、をハードコーディングする代わりにJSONを使用すると、動作が完全に変わるということです<option>。これがあなたの実用的な解決策です:

$(document).ready(function() {
    var clicker = function(e) {
        var selected = new Array();

        // using "this" here was out of context, use #select3
        $('option', $('#select3')).each(function() {
            selected.push(this.value);
        });

        $('#interest').val(selected.join(', '));
    };

    $("#select3").fcbkcomplete({
        json_url: "parseJSON.txt",
        addontab: true,
        maxitems: 10,
        input_min_size: 0,
        height: 10,
        select_all_text: "select",
        onselect: clicker
    }); 
});
于 2011-11-26T09:52:38.837 に答える
0

以下のリンクは、選択時にfcbkcompleteで値を取得する例です。idに対して実行できるのと同じプロセス。 https://github.com/emposha/FCBKcomplete/issues/110 使用方法の例:

`//オートコンプリートjqueryはここから始まります
     $( "#box")。fcbkcomplete({
                    幅:250、
                    addontab:true、                   
                    maxitems:1、
                    input_min_size:0、
                    高さ:10、
                    キャッシュ:true、
                    filter_case:true、
                    filter_hide:true、
                    filter_selected:true、
                    newel:本当、
                    filter_case:false、
                    onselect:function(item)
                    {{
                        get_value_dealer(item._value、item._id);
                    }
                });
    //オートコンプリートjqueryはここで終了します
`
于 2015-12-07T06:51:57.753 に答える