Как делание для того, чтобы не desapareza value неудара в лунку

Я новая используя typeahead.js с Джанго. Я использую ты подпираешь handlebars_min.js. Когда я пишу три символа, они являются элементами моего списка, которые совпадают с поисками, кликнув, кладется элемент в input. Проблема, - в котором, когда я выбираю элемент и даю click снаружи input, value input он скрывается.

Здесь - мой код

Views.py

def json_destino(request):
destino = request.GET.get('q', None)

if not destino:
    return HttpResponse(json.dumps({}))

destinos = Clientes.objects.filter(nombre__icontains=destino)

vl = [{'name': c.nombre,'destino': c.nombre} for c in destinos]
vl = vl[:10]
ret = json.dumps(vl[:10])
return HttpResponse(ret)

Я храню в архиве autocomplete.js

$(function()
{
var engine1 = new Bloodhound({
    remote: '/destino/name/json/?standard=true&q=%QUERY',
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,

});

engine1.initialize();
$('#id_destino').typeahead({minLength: 3,highlight: true}, {
    name: 'destino',
    displayKey: 'id',
    source: engine1.ttAdapter(),
    templates: {
        empty: [
            '<div class="empty-message">',
            'No se ha encontrado ningun elemento',
            '</div>'
        ].join('\n'),
        suggestion: Handlebars.compile('<p style="border: 1px solid red; padding: 5px;">'+
            '<span class="text-primary" style="font-size:20px;">{{name}}</span><br>' +
            '</p>')
    }
}).bind('typeahead:selected', function(obj, datum) {
    taselected(obj, datum);
}).bind('typeahead:autocompleted', function(obj, datum) {
    taselected(obj, datum);
});

function taselected(obj, datum) {
    $("#div_id_destino").click();
    $("#id_destino").val(datum.destino);

}

});

HTML

<div id=div_id_destino>
     <input type="text" name="destino"  id="id_destino" />
    </div> 
<script src="{% static 'js/autocomplete.js' %}"></script>
1
задан 12.01.2017, 23:26
0 ответов

в просьбе к /destino/name/json/?standard=true&q json, который ты возвращаешь с HttpResponse(ret) мне не кажется, что у него есть в какой-либо из Ваших статей ключ value, поскольку ты определяешь ее здесь:

datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value')

попробуй менять это из-за:

datumTokenizer: Bloodhound.tokenizers.obj.whitespace('destino')

что будет способствовать тому, чтобы поиски в области текста были из-за destino или если ты желаешь из-за name

в этой линии:

displayKey: 'id',

мне не удается найти документацию для этого выбора twitter typeahead, ты уверена, что он не display вместо displayKey?

https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md#datasets


я оставляю тебе ссылку к jsfiddle с примером для того, чтобы смогло удаваться осуществить тебе лучший код.

пробует помещать он код функции taselected чтобы знать, нет ли какой-то ошибки там, и проверь консоль твоего браузера в поисках ошибок javascript.

https://jsfiddle.net / 2myqtjeu /

2
ответ дан 03.12.2019, 17:41

Теги

Похожие вопросы