2017-05-24 48 views
0

你好我使用Django与Taggit(选择),我想给用户选择“建议标签”,并且他们出现在输入字段。我写了一些JS在控制台中工作,但不在模板中。输入字段中没有标签,但保存了给定的标签,当用户重新加载页面时,标签显示在输入字段中。建议标签出现在输入点击Django

$('.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

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

SOLUTION: 所以感谢@哈肯盖我发现这个解决方案Selectize与Taggit:

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

目前还不清楚是什么你想在这里做。我假设jQuery代码是问题,但我不明白预期的行为是什么。 [mcve] –

+0

我希望能够解决问题 – Marla

+0

您是否使用一些特殊的小部件库来使输入字段看起来像这样?使用常规的'input'字段,javascript代码应该可以工作。 –

回答

1

问题是由Selectize造成的。为了获得奇特的输入,它隐藏了实际的输入元素,并显示一个div。 Div可以具有造型的子元素,不像input。问题是没有双向绑定。所以,即使您更新隐藏的输入,选择输入也不会反映这些更改。

你应该能够找到一个解决方案,你怎么可以指的的selectize API文档更新在selectize输入值: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) 
});