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
相关产品推荐
相关产品推荐

