POST未选中复选框,其值为Node

时间:2017-12-13 01:16:14

标签: javascript node.js forms checkbox

这是一个常见的主题,但在这个特定的用例中,我一直无法找到解决方案。我在一个表单中有一个动态数量的复选框,正在提交给Node.js服务器。我的复选框看起来像这样:

<input type='hidden' name='ingredient[num]' value='off' /> //not currently in use, see below
<input type='checkbox' name='ingredient[num]' checked />

选中所有复选框后,服务器会收到类似这样的内容(在req.body.ingredient之后):

{ num: ['on','on','on'] }

如果取消选中部分或全部复选框,我希望它能收到类似数量的相应内容:

{num: ['on','off','off'] }

我尝试过使用值=&#39; off&#39;的隐藏输入。在我的复选框之前和之后,这还没有奏效。服务器同时接收&#39; on&#39;并且&#39;关闭&#39;检查时的值。我还试过了一个JavaScript解决方法(下面),但我还没有让它工作。有什么想法吗?

<script>
let form = document.getElementById('addIngredients');
form.addEventListener('submit', function(e) {
    e.preventDefault();

    let boxes = document.querySelectorAll('input[type=checkbox]:not(:checked)');
    boxes.forEach(function(box) {
        box.setAttribute('value', 'off');
    });

    form.submit();
})
</script>

编辑:这与建议的重复问题不同。使用隐藏输入时,正文解析器似乎不会将复选框分组为数组。例如,有三个框,全部选中,服务器正在接收[ 'off', 'on', 'off', 'on', 'off', 'on' ]

0 个答案:

没有答案