Я использую ввод тегов начальной загрузки (объекты как теги) для ввода тегов. Он отлично работает с предложениями автозаполнения typehead js, как сказано в официальном документе Объекты как теги . Но это позволяет использовать только предлагаемые теги в качестве входных данных, другими словами, только те, которые находятся в списке Json. Я пытаюсь разрешить бесплатные входы вместе с предлагаемыми тегами из списка со значением по умолчанию (пример: теги stackoverflow). Но я не мог сделать это правильно. Вот мой код:

var cities = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('text'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            local: citilist //{value: 1, text: "Saint Lucia", continent: "Ararat"}... 
        });

        cities.initialize();
        var elt = $('#txt');
        elt.tagsinput({
            itemValue: 'value',
            itemText: 'text',
            typeaheadjs: {
                name: 'cities',
                displayKey: 'text',
                source: cities.ttAdapter()
            },
            freeInput: true
        });
        elt.tagsinput('add', { "value": 1, "text": "Amsterdam", "continent": "Europe" });
1
Parvez 14 Окт 2018 в 18:17

1 ответ

Лучший ответ

Вы можете попробовать этот код. Для меня это работа. Пожалуйста, напишите это с вашим существующим кодом.

var count = 0; 
$('body').on('keydown', '.tt-input', function (e) {
  if (e.keyCode === 9) {
    e.preventDefault();

    $('#your-tag-input-Id').tagsinput('add', { 
      value: --count, 
      text: $('.tt-input').val(), 
      continent: "Unsaved" 
    }); 

    $('.tt-input').val("");
  }
});

отрицательное значение - это новый добавленный тег, а положительное значение - это предлагаемые теги.

'.tt-input' - это класс текстового поля $('#txt').

Изменить: предложение count-- для --count (сначала -1, затем возвращаемое значение), так что бесплатные входные данные value начинаются с -1

3
Zahid Tanveer 28 Фев 2020 в 04:23