建议标签出现在点击输入 Django

Suggestion-tags appear on click in input Django

你好,我正在使用 Django 和 Taggit(Selectize),我想为用户提供点击 "suggestion-tags" 的选项,它们会出现在输入字段中。我写了一些 JS,它在控制台中工作但不在模板中。输入字段中没有标签出现,但给定的标签被保存,当用户重新加载页面时,标签显示在输入字段中。

$('.tags_select a').click(function() {
  var valueText = $(this).text();
  var input = $('#id_I_want');
  oldInput = input.val();
  $('#id_I_want').val(oldInput + " " + valueText);
  newInput = input.val();
  $(input).text(newInput);
  return false;
});
{% load widget_tweaks %}
<p class="formItems"> {{ SetForm.I_want|add_class:"" }}</p>
<div class="tags_select">
  <span>Tags</span>
  <a href="#">Fun</a>
  <a href="#">Lala</a>
  <a href="#">Airline</a>
</div>

我也尝试进行 ajax 调用,但同样的内容保存并显示在控制台中,但单击时未显示在模板中。它是一种 Django 形式。我认为这是问题所在,或者与 Taggit 有关系。

有人知道如何让标签在点击时立即出现吗?

编辑: 所以为了弄清楚我想做什么:如果用户点击其中一个 "Trending Tags" 它应该出现在其他(已选择的)标签所在的输入字段中。

解决方案: 因此,感谢@Håken Lid,我找到了使用 Taggit 进行选择的解决方案:

 $('.tags_select a').click(function() {
  var selectize = $("#id_I_want_to_see")[0].selectize;
  value = $(this).text();
  selectize.createItem(value)
});

问题是由Selectize引起的。为了获得花哨的输入,它隐藏了实际的输入元素,并显示了 div 。 Div 可以包含具有样式的子元素,这与 input 不同。问题是没有双向绑定。因此,即使您更新隐藏输入,选择输入也不会反映这些更改。

您应该能够通过参考 selectize api 文档找到如何更新 selectize-input 中的值的解决方案:https://github.com/selectize/selectize.js/blob/master/docs/api.md

$('.tags_select a').click(function() {
  var selectize = $("#id_I_want_to_see")[0].selectize;
  value = $(this).text();
  selectize.createItem(value)
});