4

我想使用 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's,如下所示:

<ul name="event_tag" class="tags">
    <li data-value="3">Dog</li>
</ul>

它对我不起作用的原因是因为我有初始值:

$.getJSON("ajaxrequest.json", function(data) {
    $(".tags").tagit("fill", data);
});

对我来说问题是onload,它都消失了。这样做的原因是因为fill。当我们filladdas per:替换时$(".tags").tagit("add", data);,它就起作用了。

4

2 回答 2

4

作为您提到的 tagit 插件的创建者,我想我可以帮助您。

从我所见,您似乎将其用作表单的一部分,并且当您单击提交时,您会在服务器端验证表单,如果发生错误,您会重新加载带有表单值的页面吗?

我建议你做的是启用隐藏的选择选项(select: true)。

提交表单后,您将获得所选标签的列表。

然后,如果您重新加载页面,只需将标签作为 s 加载回列表中<li>

(请注意我不懂Python,所以下面是伪代码)

if(form_values.tags)
    for(tag in form_values.tags)
        print '<li data-value=" '+tag.value+' "> '+tag.label+' </li>';
    endfor;
endif;

*您也可以将标签传递给initialTags选项,但这需要输出javascript,imo不如上述方法整洁:)

于 2012-07-29T11:31:53.593 回答
0

您应该检查 jQuery Select2 对标记的支持。

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

于 2012-07-29T12:23:28.373 回答