django +用jquery标记

时间:2012-07-29 02:32:38

标签: jquery django tag-it

我想使用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);进行操作,然后就可以了。

2 个答案:

答案 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对标记的支持。

http://ivaynberg.github.com/select2/#tags