You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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>

后续流程处理说明

  1. 点击「确定」后,Node-RED会收到消息,msg.payload为选中项的数组(例如选中test和test3时,payload为["test", "test3"])
  2. 若需要每个选中项单独输出,可在后续添加split节点,将数组拆分为单个消息,每个消息的payload对应一个选中的选项文本
  3. 请确保template节点的类型设置为「弹出模板」(Popup Template),否则无法触发弹窗交互逻辑

内容的提问来源于stack exchange,提问作者최윤섭

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:50:26