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

PHP房产项目中多房间checkbox勾选后仅首个可获取数据问题求助

房产项目房间设施复选框问题排查
  • label和input关联异常:现有代码中<input>未设置id属性,<label>的for属性仅绑定设施名称,多个房间渲染后会出现大量重复的for属性值。浏览器点击label时会优先匹配第一个对应id的input,因此点击后续房间的设施label时,实际选中的是第一个房间的对应复选框,当前操作的房间复选框未被勾选,提交时自然没有数据。
  • 多房间name属性重复:所有房间的设施复选框均使用name="room_facilities[]",同一表单内同名数组字段提交时会互相覆盖,仅会保留最后一组或者第一组房间的勾选数据,其余房间数据直接丢失。
  • 提交逻辑未适配多房间场景:如果使用JS动态提交数据,现有逻辑可能仅监听或读取了第一个房间的room_facilities[]字段,未按房间维度分别读取每个房间的勾选值。

修复代码示例

渲染每个房间的设施时,给字段加上房间唯一索引即可:

<div class=" add-list-tags fl-wrap">
    <!-- Checkboxes -->
    <ul class="fl-wrap filter-tags no-list-style ds-tg">
        <?php 
        // 假设$room_index为当前房间的唯一索引,新增房间时递增即可
        foreach ($action->fetchData("facilities") as $key => $value) {
        ?>
            <li>
                <input 
                    type="checkbox" 
                    value="<?php echo $value['id']; ?>"
                    id="room_<?php echo $room_index; ?>_fac_<?php echo $value['id']; ?>" 
                    name="room[<?php echo $room_index; ?>][facilities][]"
                >
                <label for="room_<?php echo $room_index; ?>_fac_<?php echo $value['id']; ?>"> 
                    <?php echo $value['name']; ?>
                </label>
            </li>
        <?php } ?>
    </ul>
    <!-- Checkboxes end -->
</div>

修复后后端可直接按room[索引][facilities]的结构读取每个房间的勾选设施,不会出现数据丢失问题。

内容的提问来源于stack exchange,提问作者Mewaram kansodiya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:54:01