如何将表格行内下拉框选中值传递至其他页面(PHP场景)
实现方法
你当前代码有3个基础问题会导致传值失败:
- 用
<div>标签写action/method属性完全无效,表单提交必须使用<form>标签 - 现有call按钮是固定写死的href链接,无法获取用户操作后动态选中的下拉框值
- 下拉框写的
require是拼写错误,正确HTML校验属性是required;且被设置disabled的表单元素默认不会随请求提交,需要额外兼容
方案1:原生表单POST提交(无JS,兼容性最好)
直接把每行操作区的div换成独立form标签,把a标签换成submit提交按钮,同时补全disabled状态下的隐藏域存默认医生值,修正代码笔误即可,改完的行内操作区代码如下:
<td> <!-- 把div换成form标签,指定提交地址和方法 --> <form action="manage_db.php" method="post"> <!-- 隐藏域存当前行的HN号,替代原来url拼接的参数 --> <input type="hidden" name="hn_patient" value="<?php echo $row["hn"];?>"> <select class="select" name="doc_drop" <?php if($row["doc"] != 'general'){ ?> disabled <?php // 禁用状态下加隐藏域,保证默认值能提交 $default_doc = trim($row["doc"]); ?> <input type="hidden" name="doc_drop" value="<?php echo $default_doc;?>"> <?php } ?> required> <option selected disabled>doctor</option> <?php foreach($result2 as $doc_select){ // 修正原代码笔误:$doc_selectp 多了个p,改为$doc_select $doc_val = $doc_select["doc"]; ?> <option value="<?php echo $doc_val;?>" <?= ( trim( $row["doc"] ) == $doc_val ? 'selected' : '' ) ?>> <?php echo $doc_val;?> </option> <?php } ?> </select> <select class="select" name="room" required> <option selected disabled>room</option> <option value="1">room 1</option> <option value="2">room 2</option> <option value="3">room 3</option> <option value="4">room 4</option> <option value="5">room 5</option> </select> <!-- 把a标签换成提交按钮,可自行加CSS保持和原btn-call样式一致 --> <button type="submit" class="btn-call">call</button> </form> </td>
提交后在manage_db.php里直接用$_POST拿值即可:
$hn = $_POST['hn_patient']; $selected_doc = $_POST['doc_drop']; $selected_room = $_POST['room'];
方案2:保留GET跳转,用少量JS拼接参数
如果你不想改POST提交,要保持原来的URL传参形式,给HN列加个标识类、给call按钮加点击事件,动态获取当前行的下拉框值拼到跳转地址里即可:
首先修改HN列的td、call按钮代码:
<!-- 给HN列加类名方便JS取值 --> <td class="hn-col"><?php echo $row["hn"] ?></td> <!-- 省略其他列代码 --> <td> <!-- 原有下拉框代码保持不变 --> <select class="select" name="doc_drop" <?= ( $row["doc"] == 'general' ? '' : 'disabled' ) ?> required> <!-- 原有选项代码不变,记得修正$doc_selectp的笔误、把require改成required --> </select> <select class="select" name="room" required> <!-- 原有选项代码不变 --> </select> <!-- 修改call按钮,绑定点击事件 --> <a href="javascript:;" onclick="goToCall(this)" class="btn-call">call</a> </td>
在页面底部加JS函数:
function goToCall(btn){ // 获取当前按钮所在的表格行 const currentTr = btn.closest('tr'); // 读取当前行的三个参数 const hn = currentTr.querySelector('.hn-col').textContent.trim(); const docVal = currentTr.querySelector('select[name="doc_drop"]').value; const roomVal = currentTr.querySelector('select[name="room"]').value; // 校验必填项 if(!docVal || !roomVal){ alert('请先选择医生和诊室'); return; } // 拼接地址跳转 location.href = `manage_db.php?hn_patient=${hn}&doc_drop=${encodeURIComponent(docVal)}&room=${roomVal}`; }
这种方式提交后在manage_db.php里用$_GET获取三个参数即可,disabled状态的下拉框值JS可以正常读取,不需要额外加隐藏域。
内容的提问来源于stack exchange,提问作者Namtan Saranya
相关产品推荐
相关产品推荐

