【问题标题】:django + tagging with jquerydjango + 用 jquery 标记
【发布时间】:2012-07-29 02:32:38
【问题描述】:

我想使用 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。当我们按照$(".tags").tagit("add", data);fill 替换为add 时,它就可以工作了。

【问题讨论】:

    标签: jquery django tag-it


    【解决方案1】:

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

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

    我建议您启用隐藏选择选项 (select: true)。

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

    然后,如果您重新加载页面,只需将标签以&lt;li&gt;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,imo比上述方法更不整洁:)

    【讨论】:

    • P.s 请注意,在上面的伪代码示例中,我使用了 data-value 属性,这只会在最新版本的 tagit 中被识别!请确保您正在使用它!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多