1

コードの構造が非常に異なるため、デモのコンボボックスコードに含まれるオートコンプリートで機能する方法ではありません。

任意の単語のどこかにすべての検索トークンを持つすべてのアイテムを一致させたいと考えています。単語の先頭を一致させる必要はありません。どの部分でもかまいません。検索文字列がオートコンプリート リストで強調表示されていても、それが複雑すぎる場合は気にしません。

希望する検索/結果の組み合わせ: (スペースを空けてください)
" fi th " " first second th ird"
" rs on " " first t sec on d third"
" ec rd " "first second third " ですが、そうではありませんトークンの最大/最小長または数に制限されます。

編集

私が作業していた他のオートコレクトのコード構造を使用して、その一部を理解しました。

source: function( requestObj, responseFunc ) {
    var matchArry = $("select > option").map(function(){return this.innerHTML;}).get();
    var srchTerms   = $.trim(requestObj.term).split(/\s+/);

    // For each search term, remove non-matches
    $.each (srchTerms, function (J, term) {
        var regX = new RegExp (term, "i");
        matchArry = $.map (matchArry, function (item) {
            if( regX.test(item) ){
                return{
                    label: item,
                    value: item,
                    option: HTMLOptionElement
                } ? item :null;
            }
        } );
    });

    // Return the match results
    responseFunc (matchArry);
},

select: function( event, ui ) {
    ui.item.option.selected = true;
    self._trigger( "selected", event, {
        item: ui.item.option
    });
    $("destination").val(ui.item.value);    // I added this line
},

しかし、複数の単語を同時に取得できず、同時にクリックして選択することもできません。

マップ機能で返品時に を削除する} ? item :null;と、クリックしてアイテムを選択できます。そのままにしておくと、複数の単語を入力できますが、どの項目もクリックできません...

それは問題option: thisですか?私はそれをHTMLOptionElementandに置き換えようとしましたが、null行き詰まりました。

選択ラベル内で別のフィールドの値を設定できui.item.valueますが、検索ボックスに値を入力したり、ドロップダウン メニューを閉じたりすることはできません。

4

1 に答える 1

0

気まぐれにui.item.option = ui.item.value;選択ラベルに追加すると、すべてが期待どおりに機能します。オプション: ソースの値は今のところ問題ではないようです。

*私は、これが適切なコーディング手法であると主張するものではありません

更新されたフィドル: http://jsfiddle.net/eY3hM/

于 2012-09-25T15:49:13.523 に答える