Ввод тегов Bootstrap с помощью typeahead не работает

Я хочу ограничить использование тегов только теми, которые получены из API.

Пример "Object as tags" кажется тем, что я ищу, но typeahead не работает должным образом (заполнитель не открывается)

<input id="tags" type="text">

<script>
  var tags = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    prefetch: 'http://example.com/tags'
  });
  tags.initialize();

  $('input#tags').tagsinput({
    itemValue: 'id',
    itemText: 'name',
    typeahead: {
      name: 'tags',
      displayKey: 'name',
      source: tags.ttAdapter()
    }
  });
</script>

Вот некоторые данные, возвращаемые API:

[
  {
    "name": "amazon",
    "createdAt": "2015-07-27T08:28:29.320Z",
    "updatedAt": "2015-07-27T08:28:29.320Z",
    "id": "55b5ebad3bbd894909b0eef5"
  },
  {
    "name": "android",
    "createdAt": "2015-07-27T08:28:29.398Z",
    "updatedAt": "2015-07-27T08:28:29.398Z",
    "id": "55b5ebad3bbd894909b0eef6"
  },
  {
    "name": "c-sharp",
    "createdAt": "2015-07-27T08:28:29.485Z",
    "updatedAt": "2015-07-27T08:28:29.485Z",
    "id": "55b5ebad3bbd894909b0eef7"
  },
  ...
]

Я использую Bootstrap 3.1.0, jQuery 1.10.2, Bootstrap Tags Input 0.4.2 и Typeahead 0.11.1.


person Yann Bertrand    schedule 12.08.2015    source источник
comment
Если вы хотите ограничить добавление тегов только с определенным набором значений, возможно, Bootstrap Multiselect больше соответствует вашим потребностям, чем ввод тегов Bootstrap? Вот ссылка.   -  person Andrew Orlov    schedule 12.08.2015
comment
И здесь вы можете найти более усиленную версию. Я не вижу причин давать пользователю возможность набирать текст в вашем случае.   -  person Andrew Orlov    schedule 12.08.2015
comment
Я бы предпочел использовать библиотеку тегов, как это делает StackOverflow.   -  person Yann Bertrand    schedule 12.08.2015
comment
попробуйте добавить data-role="tagsinput" к тегу input.   -  person flizana    schedule 29.11.2015
comment
Возможный дубликат ввод тегов начальной загрузки с неработающим вводом текста   -  person Chris Moschini    schedule 13.02.2017


Ответы (2)


Я видел много проблем с typeaheadjs и tagsinput.

После долгих головных болей я нашел решение.

Просто удалите эти последние строки в bootstrap-tagsinput.js:

$(function () {
$("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput();
});

Код библиотеки создает входные данные тегов без параметров, поэтому ваши параметры ввода будут игнорироваться.

person stranger789    schedule 28.07.2016

person    schedule
comment
Пожалуйста, предоставьте некоторые пояснения к вашему фрагменту кода - person Dmitry Pashkevich; 21.12.2015