选择Django中的所有复选框

时间:2014-01-07 10:36:22

标签: python html django

我试图找到一个优雅的解决方案,而无需使用JQuery或JS。无论如何,是否可以执行选择模型中选项的所有字段?

我不太热衷于使用:django checkbox select all

我看到它暗示:https://groups.google.com/forum/#!topic/django-users/dzdiZ9TLR5g

但是从来没有能够找到任何容易让我直接从Django提供选择的东西。有谁知道这是否可以开启?或者JS是执行此操作的唯一方法吗?

我之前注意到这个答案:select all rows in django_tables2

但有没有办法避免这种方法,因为我可能不知道字段的原因 - 因此,如果我在每个页面上有多个字段 - 即多个名称。

2 个答案:

答案 0 :(得分:1)

你在Django中编写的任何解决方案都会涉及覆盖小部件渲染,以输出包含javascript / jquery的html。我不认为有任何问题。

编辑:回答你的评论,我个人这样做的方法是创建一个SlaveCheckboxWidget,可以做一些简单的继承标准复选框小部件,但将css类名改为“slave-checkbox”或类似,然后有一个MasterCheckboxWidget,它包含一些jquery来选择所有(".slave-checkbox")并切换它们。

有关自定义django小部件here

的更多信息

答案 1 :(得分:1)

这是我使用多个表单和多个字段的简单解决方案:

        {% for form in formset %}

    <div>
        {% for field in form %}

        {{ field }}

        {% for check in field|slice:":1" %} 
        <input type="checkbox" onClick="toggle(this,'{{ check.name }}')"/>
        Select All
        {% endfor %}
        {% endfor %}
    </div>

    {% endfor %}

一个字段的每个复选框都具有相同的名称 - 因此js可以使用它。 请注意,此示例表单的所有字段都是复选框。

JS代码:

<script type="text/javascript" >
function toggle(source,name) {
    checkboxes = document.getElementsByName(name);
    for (var i = 0,
        n = checkboxes.length; i < n; i++) {
        checkboxes[i].checked = source.checked;
    }
}
</script>

我为django扩展了这个解决方案: How to implement "select all" check box in HTML?

相关问题