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

如何在PHP中获取选中单选框的ID或自定义data属性值?

PHP单选框取值问题:获取选中项的ID或data属性值

你当前遇到的问题是:表单中name为roomType的单选框,提交后PHP拿到的是on,而非选中项的ID或data-customInfo属性值。原因是单选框默认提交的是value属性值,若未设置value,则默认提交on。以下是两种需求的解决方案:

一、获取选中单选框的ID

只需给每个单选框添加value属性,将值设为对应ID即可:

修改后的HTML代码

<div id="roomsContainer">
    <input type="radio" name="roomType" id="Room1" data-customInfo="some information about room" value="Room1"/>    
    <label for="Room1" class="roomTypeLabel"><div class="roomDiv">Room1</div></label>

    <input type="radio" name="roomType" id="Room2" value="Room2"/>    
    <label for="Room2" class="roomTypeLabel"><div class="roomDiv">Room2</div></label>
    <!-- 其他单选框同理 -->
</div>

PHP代码(无需大改)

// 先判断参数是否存在,避免报错
$roomType = isset($_POST['roomType']) ? $_POST['roomType'] : '未选择房型';
$body .= "Room Type: $roomType\n";

此时提交后就能得到Room Type: Room1或Room Type: Room2的正确结果。

二、获取选中单选框的data-customInfo属性值

PHP无法直接读取DOM元素的data-*属性,需要通过前端JavaScript将该值同步到表单中一起提交:

修改后的HTML代码(添加隐藏输入框)

<div id="roomsContainer">
    <input type="radio" name="roomType" id="Room1" data-customInfo="some information about room" value="Room1"/>    
    <label for="Room1" class="roomTypeLabel"><div class="roomDiv">Room1</div></label>

    <input type="radio" name="roomType" id="Room2" data-customInfo="another room info" value="Room2"/>    
    <label for="Room2" class="roomTypeLabel"><div class="roomDiv">Room2</div></label>
    <!-- 其他单选框同理 -->
    <!-- 添加隐藏输入框用于存储data-customInfo值 -->
    <input type="hidden" name="roomCustomInfo" id="roomCustomInfo" value="">
</div>

添加JavaScript代码(监听单选框选择事件)

// 给所有roomType单选框绑定change事件
document.querySelectorAll('input[name="roomType"]').forEach(radio => {
    radio.addEventListener('change', function() {
        if (this.checked) {
            // 将选中项的data-customInfo值写入隐藏框
            document.getElementById('roomCustomInfo').value = this.dataset.customInfo || '';
        }
    });
});

PHP代码(读取隐藏框的值)

$roomType = isset($_POST['roomType']) ? $_POST['roomType'] : '未选择房型';
$roomCustomInfo = isset($_POST['roomCustomInfo']) ? $_POST['roomCustomInfo'] : '无额外信息';
$body .= "Room Type: $roomType\n";
$body .= "Room Information: $roomCustomInfo\n";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:17:40