您好我正在使用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有关。
编辑: 所以要明确我想要做的事情:如果用户点击其中一个“趋势标签”,它应该出现在输入字段中,其他(已经选择的)标签是。
解: 所以多亏了@HåkenLid,我找到了这个用Taggit选择Selectize的解决方案:
$('.tags_select a').click(function() {
var selectize = $("#id_I_want_to_see")[0].selectize;
value = $(this).text();
selectize.createItem(value)
});
答案 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)
});