NodeJS 通过POST请求获取表单中复选框元素的值

ktca8awb  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(140)

我正在尝试使用JavaScript(Node.js,Express.js和用于模板的ejs)制作一个简单的to-do应用程序。我使用了一个表单来POST输入文本框的值,每次按下“提交”按钮时,一个包含任务文本和ID的JS对象被追加到数组“allTasks”中。
但是,我希望能够使用复选框划掉列表项。我可以使用CSS来完成,但是在每次“提交”之后,复选框都会被清除,因为列表是使用针对“tasksList”数组中的元素的 *for**循环 * 生成的。这就是它目前的工作方式:image
下面是我的index.ejs文件中的相关部分:

<form action="/submit" method="POST">
    <label for="item">New item...</label>
    <input type="text" id="task" name="task" required />
    <input type="submit" value="Submit" />
</form>
    
<form action="/checked" method="POST">
    
    <% for(i=0; i<locals.tasksList.length; i++) {%>
    
    <li> 
        <input type="checkbox">
        <label for="<%= locals.taskId %>"> <%=  (locals.tasksList[i]["newTask"])%> </label>
    </li>
    
    <%}%>
    
</form>

字符串
这是我的index.js文件中的相关部分:

var allTasks = [];

app.post("/submit", (req, res) => {
  var newTask = req.body["task"];
  var idNumber = allTasks.length;
  allTasks.push({ idNumber, newTask });
  res.render(__dirname + "/views/index.ejs", {
    tasksList: allTasks,
    taskId: idNumber,
  });
});

app.post("/checked", (req, res) => {
  console.log(req.body);
});


解决此问题的一种方法是将已检查的元素存储在index.js文件中的数组中,类似于allTasks数组。我试图通过使用控制台日志来获取复选框的值(勾选或不勾选),但这导致一个空对象被打印到控制台。对于这个问题的解决方案或任何更好的解决方案将非常感激。

9w11ddsr

9w11ddsr1#

如果您要在恢复数据时预选复选框,则需要将“值”与“选中”条件进行比较。您还需要添加一个通用名称。

相关问题