5

2 つの異なるテキスト入力で、それぞれ異なるソース関数を使用して先行入力を行いたいと考えています。例として、1 つは first_names を取得し、もう 1 つは last_names を取得します。

これがどのように見え、機能していないかを次に示します。

$('#first_name').typeahead({
    source: function (query, process) {
        $.get('/users/typeahead-first-name', { term: query }, function (data) {
            return process(JSON.parse(data));
        });
    }
});

$('#last_name').typeahead({
    source: function (query, process) {
        $.get('/users/typeahead-last-name', { term: query }, function (data) {
            return process(JSON.parse(data));
        });
    }
});

最初の先行入力は正常に機能します。ただし、2 つ目は、入力を開始してオプションが表示され始めたときにオプションをクリックすると、ドロップダウンが閉じて、入力フィールドに値が挿入されません。

誰かがそれを機能させる方法を知っていますか?

4

1 に答える 1

4

これはあなたを助けるのに少し遅れているかもしれませんが、私は自分のアプリで同じ問題を抱えていました. 解決策は、次のように「name」属性を追加することでした。

$('#first_name').typeahead({
    name: 'first_name',
    source: function (query, process) {
        $.get('/users/typeahead-first-name', { term: query }, function (data) {
            return process(JSON.parse(data));
        });
    }
});

$('#last_name').typeahead({
    name: 'last_name',
    source: function (query, process) {
        $.get('/users/typeahead-last-name', { term: query }, function (data) {
            return process(JSON.parse(data));
        });
    }
});

それらが異なる限り、コードでそれらを何と呼んでもかまいませんでした。タイプアヘッドは応答のキャッシュを保持するため、これも意味があります。(キャッシュをバインドしているインスタンスに結び付けただけだと思っていたでしょうが...)

于 2014-03-04T20:26:03.930 に答える