1

私はhttps://github.com/tcrosen/twitter-bootstrap-typeahead/blob/master/demo/js/demo.jsを使用しています

私の電話:

$('#SearchUser').typeahead({
                ajax: { 
                    url: '/users/ajax_finduser', 
                        triggerLength: 3, 
                        timeout: 300,
                        method: 'post',

                },
                display: 'name',
                val: 'id',
                itemSelected: updateID
            });

私の新しい出力:

[
   {"id":"5","name":"Som name"},
   {"id":"6","name":"Another name"}
]

そして、ここに私の問題があります。先行入力が期待している VAL と NAME は次のようになります。

[
    { id: 1, name: 'Some users name' },
    { id: 2, name: 'Another users name' }
]

では、先行入力関数 (USER.name + User.id) に追加のレベルを追加するにはどうすればよいでしょうか? (){}[]? 何を使えばいいのかわからない

引用符を修正するには?typeahead は json 出力をそのまま受け入れません。出力が正しいjsonであることをどこかで読みました。ここで何か不足していますか?

4

1 に答える 1

4

@RuslanasBalčiūnasによって提案された要点に従ってこれ
が私が最終的に得たものです:

autosep = '####';
$('.autocomplete').typeahead({
    minLength: 3
  , source: function (query, process) {
        if (!finished) {
            return;
        }
        finished = false;
        return $.get(
            'the_action'
          , the_params
          , function (response) {
                var data = new Array(); 
                for (var i in response) {
                    data.push(
                        response[i]['id']
                      + autosep
                      + response[i]['label']
                    );
                }
                finished = true;
                return process(data);
            }
        );
    }
  , highlighter: function(item) {
        var parts = item.split(autosep);
        parts.shift();
        return parts.join(autosep);
    }
  , updater: function(item) {
        var parts = item.split(autosep);
        $('#the_id').val(parts.shift());
        return parts.join(autosep);
    }
});
于 2012-09-17T13:07:19.080 に答える