Javascript Html复选框,多个具有相同';名称';。值1(如果选中),值0(如果未选中)

Javascript Html复选框,多个具有相同';名称';。值1(如果选中),值0(如果未选中),javascript,html,python-3.x,flask,Javascript,Html,Python 3.x,Flask,在我的页面上,我有一个包含“添加行”按钮的表,因此用户可以根据需要添加更多行。通过克隆表中的最后一行来添加该行。在这一行中,我想放两个复选框 <td class = ''> <input class = '' type='checkbox' name ='installed_by_cm' value='1'/> </td> <td class = ''> <input class = '' type='checkbox' name ='in

在我的页面上,我有一个包含“添加行”按钮的表,因此用户可以根据需要添加更多行。通过克隆表中的最后一行来添加该行。在这一行中,我想放两个复选框

<td class = ''> <input class = '' type='checkbox' name ='installed_by_cm' value='1'/>  </td>
<td class = ''> <input class = '' type='checkbox' name ='installed_after_cm' value='1'/>  </td>

这意味着有多个具有相同“name”标记的复选框,这是我稍后在代码中处理数据所需要的。我使用flasks
request.form.getlist()
在python后端获取信息


由于复选框类型默认为“无”,并且我无法使用隐藏输入,因为它将始终由请求收集,因此我无法找到方法使复选框在选中时发送1,在未选中时发送0。任何帮助都将非常感激

最简单的一个,不需要javascript,只需在复选框前添加一个隐藏输入:

<input type="hidden" name="check[0]" value="0" />
<input type="checkbox" name="check[0]" value="1" />

输入必须具有相同的名称。如果选中该复选框,则将提交值1,否则将从隐藏输入中提交值0

您的案例javascript解决方案,无需隐藏输入:

<script type="text/javascript">
    // when page is ready
    $(document).ready(function() {
         // on form submit
        $("#form").on('submit', function() {
            // to each unchecked checkbox
            $(this + 'input[type=checkbox]:not(:checked)').each(function () {
                // set value 0 and check it
                $(this).attr('checked', true).val(0);
            });
        })
    })
</script>

<form method="post" id="form">
    <input type="checkbox" name="check[0]" value="1" />
    <input type="checkbox" name="check[1]" value="1" />
    <input type="submit" value="Save Changes" />
</form>

//当页面准备就绪时
$(文档).ready(函数(){
//提交表格
$(“#表单”)。在('submit',function()上{
//添加到每个未选中的复选框
$(this+'input[type=checkbox]:未(:选中)。每个(函数(){
//设置值0并检查它
$(this.attr('checked',true).val(0);
});
})
})

您需要将名称更改为基于阵列的名称,例如
name=“installed\u by_cm[]”
否则复选框将相互覆盖。大多数情况下,我会使用标识符,例如
name=“installed_by_cm[]”
(PHP中的示例)