点击输入Django

时间:2017-05-24 11:41:49

标签: javascript jquery django django-taggit

您好我正在使用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有关。     

有人知道如何在点击标签时立即显示标签吗? enter image description here

编辑: 所以要明确我想要做的事情:如果用户点击其中一个“趋势标签”,它应该出现在输入字段中,其他(已经选择的)标签是。

解: 所以多亏了@HåkenLid,我找到了这个用Taggit选择Selectize的解决方案:

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

1 个答案:

答案 0 :(得分:1)

问题是由Selectize引起的。为了得到奇特的输入,它隐藏了实际的输入元素,并显示了一个div。与Div不同,input可以包含带样式的子元素。问题在于没有双向约束。因此,即使您更新隐藏的输入,选择性输入也不会反映这些更改。

您应该能够通过参考选择性api文档找到解决方案,了解如何更新选择性输入中的值: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)
});