在远程查询第二个输入时使用一个Typeahead输入的结果

时间:2014-07-13 21:37:51

标签: autocomplete typeahead.js

我试图在第二个预先输入的远程AJAX调用中使用预先输入的结果。

这是我到目前为止所拥有的:

var result1 = new Bloodhound({
    datumTokenizer : Bloodhound.tokenizers.obj.whitespace('result'),
    queryTokenizer : Bloodhound.tokenizers.whitespace,
    limit : 100,
    remote : {
        url : 'getResult1.php?q=%QUERY'
    }
});

result1.initialize();

$('#input1').typeahead({
    minLength : 2
}, {
    name : 'result1',
    displayKey : 'result',
    source : result1.ttAdapter()
}
}).on('typeahead:selected typeahead:autocompleted', function($e, datum) {
    $('#input2').typeahead({
        minLength : 1
    }, {
        name : 'result2',
        displayKey : 'value',
        remote: {
           url : 'getResult2.php?q=%QUERY&r=datum['result']'
    }
 }

我错过了什么?

1 个答案:

答案 0 :(得分:0)

似乎第二个输入没有很好地配置Bloodhound对象。必须是这样的:

var result1 = new Bloodhound({
    datumTokenizer : Bloodhound.tokenizers.obj.whitespace('result'),
    queryTokenizer : Bloodhound.tokenizers.whitespace,
    limit : 100,
    remote : {
        url : 'getResult1.php?q=%QUERY'
    }
});

result1.initialize();

$('#input1').typeahead({
    minLength : 2
}, {
    name : 'result1',
    displayKey : 'result',
    source : result1.ttAdapter()
}
}).on('typeahead:selected typeahead:autocompleted', function($e, datum) {
    var result2 = new Bloodhound({
        datumTokenizer : Bloodhound.tokenizers.obj.whitespace('result'),
        queryTokenizer : Bloodhound.tokenizers.whitespace,
        limit:100,
        remote: {
           url : 'getResult2.php?q=%QUERY&r=datum['result']'
       }
    });

    result2.initialize();

    $('#input2').typeahead({
        minLength : 1
    }, {
        name : 'result2',
        displayKey : 'value',
        source: result2.ttAdapter()
    }
 }