表单未发布所有选中的输入复选框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表单未发布所有选中的输入复选框相关的知识,希望对你有一定的参考价值。

我试图发布所有选中的输入复选框。输入字段由django的for循环生成,如下所示。

从我到目前为止发现的情况来看,下面应该有效。我相信问题可能在于输入字段是通过forloop生成的,如果是这样的话,我该如何解决这个问题呢?对于每个值添加到列表并使用js发布?

index.html

{% for q in list %}
    {% if forloop.last %}
        <form method="POST" name="selectedchecks"> {% csrf_token %}
            <div class="qblock">
                <label class="pure-material-checkbox">
                    <input class="selectedchecks" type="checkbox" name="choices[]" value="{{ q }}">
                    <span>
                        <p>{{ q }}</p>
                    </span>
                </label>
            </div>
        </form>
    {% endif %}
{% endfor %}

views.py

if request.method == 'POST':
    selected_list = request.POST.getlist('choices[]')

如果选中第一个复选框,则仅返回{{q}}的第一个值,如果选择除第一个复选框之外的任何其他复选框,则不返回任何内容(空列表)。选中所有复选框也只返回第一个值。

它应该POST所有选中的复选框值。

任何帮助表示赞赏!

答案

UPDATE

问题是表单正在为每个循环迭代重新初始化。在循环之前设置<form>标记解决了问题!

以上是关于表单未发布所有选中的输入复选框的主要内容,如果未能解决你的问题,请参考以下文章

js 怎么把所有选中的复选框 都变为 未选中状态

回发后未选中复选框

POST 未选中的 HTML 复选框

表单提交后选中的复选框保持选中/未选中状态

通过ajax发送未选中的复选框值

表单发布时如何获取复选框元素中未选中复选框的值?