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

标签 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>

最佳答案

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

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

如果您在页面中只选中了一个复选框(例如:Dairy),它将打印“dairy”。如果有多个复选框,那么您会在输出中得到“{ 'dairy', 'meat' }”。确保复选框在表单内。

另一种方法:

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

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

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

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

关于html - 在 NodeJS 中读取复选框数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29108747/

相关文章:

javascript - 选择器“没有匹配任何元素

javascript - 取消选中复选框后如何从数组中删除元素

javascript - 在谷歌浏览器中刷新后复选框未选中

javascript - CSS 跨浏览器弧形边框

javascript - Rails 5、Ajax、jQuery - 无法将接收到的数据发送到特定元素

javascript - Electron.JS + devtoolsinstaller : 'BrowserWindow.addDevToolsExtension' is deprecated and will be removed. 请改用 'session.loadExtension'

sql-server - request.on ('row' ,函数(列){})从未被调用

javascript - 仅突出显示包含复选框的单元格

html - 如何删除超链接图像周围的黑色边框?

jQuery 获取所有 HTML 属性