在NodeJS中读取复选框数据的正确方法

时间:2015-03-17 20:09:02

标签: html node.js checkbox

我的网页上有一个表单,并将其提交给NodeJS后端。 我在复选框上遇到问题。当提交到服务器并且我通过req.body.foods阅读它时,我会得到类似['on', 'on', 'on']的内容。

但我想得到实际值,即['dairy', 'fish']等等。

我该怎么做?

<div class="col-sm-6">
    <div class="checkbox">
        <label><input name="food" type="checkbox" value="dairy">Dairy</label>
    </div>
    <div class="checkbox">
        <label><input name="food" type="checkbox" value="meat">Meat</label>
    </div>
    <div class="checkbox">
        <label><input name="food" type="checkbox" value="fish">Fish</label>
    </div>
</div>

1 个答案:

答案 0 :(得分:1)

您可以在node.js文件中执行以下操作:

console.log(req.body.food); //This will print the array of values.

如果您在页面中只选中了一个复选框(例如:Dairy),它将打印&#34; dairy&#34;。如果有多个复选框,那么您可以获得&#34;&#39; dairy&#39;,&#39; meat&#39; }&#34;在输出中。确保复选框在表单中。

另一种方法:

在表单中包含隐藏的输入元素:

<input name="SelectedValues" type="hidden" value="">

还包括在每个复选框的onchange事件中调用javascript文件,或者在表单中的提交按钮的onclick事件中调用。

onclick='buildlist("YourCheckBoxName","SelectedValues");'

使用javascript函数循环复选框并构建逗号分隔的所选值列表:

function buildlist(listName,labelName){
  var controls = document.getElementsByName(listName);
  var label = document.getElementsByName(labelName);
  label.value = '';
  for(var i=0;i<controls.length;i++){
     label.value += controls[i].value.toString()+',';
  }
}

现在在node.js文件中,使用以下代码访问值列表:

req.body.SelectedValues