如何在Node-RED中获取HTML复选框的数据?
问题解决方案
你当前的代码存在几个关键问题,导致弹窗点击无反应且无法获取复选框数据:
- 缺少提交/取消按钮及对应交互逻辑,Node-RED弹窗需要主动处理确认事件
- 复选框未设置标识属性(如
value),无法区分选中项 test3的HTML标签结构错误,闭合标签位置不对
以下是修改后的完整代码,可实现你需要的功能:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>테스트</title> <script> window.onload = function(){ // 默认选中所有复选框 const checkboxes = document.querySelectorAll('input[type="checkbox"]'); checkboxes.forEach(box => box.checked = true); // 确定按钮逻辑:收集选中值并返回给Node-RED document.getElementById('confirmBtn').addEventListener('click', function() { const selected = Array.from(checkboxes) .filter(box => box.checked) .map(box => box.value); // 关闭弹窗并返回选中数据,此处返回数组,可按需调整格式 RED.popup.resolve(selected); }); // 取消按钮逻辑:关闭弹窗并返回取消标识 document.getElementById('cancelBtn').addEventListener('click', function() { RED.popup.reject('取消操作'); }); }; </script> </head> <body style="padding: 15px;"> <label>test<input type="checkbox" value="test" name="test-checkbox" /></label><br> <label>test2<input type="checkbox" value="test2" name="test-checkbox" /></label><br> <label>test3<input type="checkbox" value="test3" name="test-checkbox" /></label><br> <label>test4<input type="checkbox" value="test4" name="test-checkbox" /></label><br> <div style="margin-top: 15px;"> <button id="confirmBtn">确定</button> <button id="cancelBtn">取消</button> </div> </body> </html>
后续流程处理说明
- 点击「确定」后,Node-RED会收到消息,
msg.payload为选中项的数组(例如选中test和test3时,payload为["test", "test3"]) - 若需要每个选中项单独输出,可在后续添加split节点,将数组拆分为单个消息,每个消息的payload对应一个选中的选项文本
- 请确保template节点的类型设置为「弹出模板」(Popup Template),否则无法触发弹窗交互逻辑
内容的提问来源于stack exchange,提问作者최윤섭
相关产品推荐
相关产品推荐

