CodeIgniter中循环生成表单如何获取对应行同name输入框值
嘿,针对你在药店管理软件药品候选列表标签页里遇到的问题,我给你整理几个实用的实现思路,都能精准获取点击行对应输入框的库存值:
给输入框
name属性添加唯一标识
循环生成表格时,把药品的唯一ID(比如数据库里的drug_id)嵌入到输入框的name属性中,比如写成name="stock[<?= $drug['id'] ?>]"。同时给每行的「Confirm」按钮通过data属性绑定对应的药品ID,比如<button class="confirm-btn" data-drug-id="<?= $drug['id'] ?>">Confirm</button>。点击按钮时,前端通过JS获取该data属性的ID,再匹配到对应输入框的数值,最后把ID和库存值一起提交到CodeIgniter控制器。后端可以通过$this->input->post('stock')[$drug_id]直接拿到当前行的库存值。每行单独封装表单
不用复杂的JS处理,直接把每行的库存输入框和「Confirm」按钮包裹在一个独立的<form>标签里。这样点击按钮提交时,浏览器只会提交当前表单内的输入内容,后端直接通过$this->input->post('stock')就能拿到当前行的库存值,逻辑清晰且无需额外前端代码,适合简单场景。利用JS事件委托精准定位
如果不想修改输入框的name属性,可以给表格的每行添加唯一标识(比如data-row-id绑定药品ID),然后通过事件委托给所有「Confirm」按钮绑定点击事件。点击时,通过DOM遍历找到当前按钮所在行的输入框,比如用原生JS的closest()方法:event.target.closest('tr').querySelector('input[name="stock"]').value,拿到值后结合对应的药品ID,通过AJAX提交到CodeIgniter的控制器方法处理即可。
内容的提问来源于stack exchange,提问作者Uzzal Sheel

