如何从选择标签中获取两个值


How to get two values from select tag

我一直在运行一些代码,它返回id,现在我需要返回id和名称。我觉得这应该非常容易,但我很难做到。我试图分解这些值,但仍然无法让$name工作。

法典:

 <select name="id" required="true" value="<?php echo $row['name']; ?>">
   <?php                         
     $row="SELECT id, name FROM modules";
     while ($row = $stmt->fetch()){
     echo "<option value='"" . $row['id'] . "'">" . $row['name'] . "</option>";
     }
       list($id,$name) = explode(".",$_GET['id']);
       echo $name;
   ?>
 </select>

如果可能的话,我希望能够从下拉菜单中获取 id 和名称以进行 POST。

这样做:

<select name="id" required="true" value="<?php echo $row['name']; ?>">
   <?php                         
     $row="SELECT id, name FROM modules";
     while ($row = $stmt->fetch()){
     echo "<option value='"" . $row['id'] . '|' . $row['name'] . "'">" . $row['name'] . "</option>";
     }
   ?>
 </select>

然后:

list($id,$name) = explode("|",$_GET['id']);
echo $name;

HTML表单将发送选择框的值(在本例中为$row['id']),但不发送显示文本(在本例中为$row['name'])。

如果未指定值,则将发布显示文本。如果你想要两者,你可能不得不使用 Javascript 在选择时将显示文本分配给隐藏字段,该字段也会被发布。

下面是一个 jQuery 示例:

<script>
$(document).ready(function() {
    $('#id').change(function() {
        var display_text = $( "#id option:selected" ).text();
        $('#hidden_field').val(display_text);
    });
});
</script>
<select name="id" required="true" value="<?php echo $row['name']; ?>">
... etc
<input type="hidden" name="hidden_field" id="hidden_field">

此示例应将所选选项的显示文本分配给#hidden_field该文本将与表单的其余部分一起发布,因此在 PHP 中

<?php
$selected_value = $_POST['id'];
$selected_display = $_POST['hidden_field'];
?>
您必须在

选项标签的 value 属性中包含 id 和名称,由某个字符分隔(如果您确信名称和 id 永远不会包含句点,则可能是 '.)。