我想使用jQuery并为用户创建标记界面。类似于StackOverflow中的用户可以为他们提出的问题类型添加标记。我使用jQuery和tagit让它工作:
<击> http://jquery.webspirited.com/2011/02/jquery-tagit-a-jquery-tagging-plugin/ 击>
图书馆的新位置:
https://github.com/hailwood/jQuery-Tagit
问题是,如果用户在表单的另一部分中出现错误并单击“提交”,则表单将重新加载并显示错误消息,并且所有标记都已消失。有没有简单的方法在Django中获取标记?
[编辑]
根据Hailwood的回复尝试这个......
<ul name="event_tag" class="tags">
<li class="tagit-choice" tagvalue="3">
Dog
<a class="tagit-close">x</a>
</li>
</ul>
但是,当我加载页面加载时,没有加载该特定标记?似乎清除了ul
标记,然后在其中加载了其他信息。我加载页面时没有看到它。
我也尝试过如下:
<ul name="event_tag" class="tags">
<li data-value="3">Dog</li>
</ul>
当我尝试这种方式时,它会出现一秒钟然后消失......
[编辑2]
找到解决我问题的方法。正如Hailwood建议的那样,我们可以按照以下方式创建li
:
<ul name="event_tag" class="tags">
<li data-value="3">Dog</li>
</ul>
它不适合我的原因是因为我有初始值:
$.getJSON("ajaxrequest.json", function(data) {
$(".tags").tagit("fill", data);
});
对我来说问题就是onload,它全都消失了。原因是fill
。当我们将fill
替换为add
时,按照$(".tags").tagit("add", data);
进行操作,然后就可以了。
答案 0 :(得分:4)
作为你提到的tagit插件的创建者,我想我可以帮助你。
从我可以看到它看起来你正在使用它作为表单的一部分,当你点击提交你在服务器端验证表单,如果发生错误你重新加载页面的表格值?
我建议你做的是启用隐藏的选择选项(select: true
)。
提交表单后,您将获得所选标签的列表。
然后,如果您重新加载页面,只需将标记作为<li>
s重新加载到列表中。
(请注意我不懂Python,所以以下是伪代码)
if(form_values.tags)
for(tag in form_values.tags)
print '<li data-value=" '+tag.value+' "> '+tag.label+' </li>';
endfor;
endif;
*你也可以将标签传递给initialTags
选项,但这需要输出javascript,它比上面的方法更整洁:)
答案 1 :(得分:0)
你应该检查jQuery Select2对标记的支持。