在我的下拉列表中,每个选项都有两个不同的值。我怎样才能找回它们?让我说明一下我的意思。
<select name="my_ddl">
<option value="<?php $value_Id ?>"><?php $value_text ?></option>
<option value="<?php $value_Id ?>"><?php $value_text ?></option>
</select>
发布表单时,我希望能够同时获取所选选项的$ value_id和$ value_text。我怎么能这样做?
$ _ POST ['my_ddl']只获得一个值而不是两个值。
在asp.net中,我可以通过引用my_ddl.Value和my_ddl.Text来完成此任务。
谢谢!
答案 0 :(得分:5)
严格来说,这是不可能的。
您可以做什么使用value
属性中的分隔符:
<select name="my_ddl">
<option value="<?php echo $value_Id ?>|<?php echo $value_text ?>"><?php echo $value_text ?>
</option>
</select>
和...
<?php
list($id, $text) = explode('|', $_POST['my_ddl']);
//...
?>
答案 1 :(得分:3)
另一种奇怪的做法是:
<select name="my_ddl">
<option value="<?php echo $value_Id ?>[<?php echo $value_text ?>]">
<?php echo $value_text ?>
</option>
</select>
然后当你处理它时,你可以做到这一点,甚至可能更简单:
foreach ($_POST['my_dd1'] as $value_Id => $value_text) {
$value_Id = $value_Id;
$value_text = $value_text;
}
因为php将[]视为字符串是一个数组,所以你立即拥有一个关联数组。我同意,如果你把它放在首位,你应该能够在代码中再次查找它而不是依赖它。
答案 2 :(得分:0)
如果您使用PHP填充<option>
的文本,那么您可以在服务器上查看该值。也许您只需要使用$ value_id来查找数据库表中的文本?
如果没有,您可以在表单上包含一个隐藏字段,并使用JavaScript在每次选择新值时使用文本更新该隐藏字段。
答案 3 :(得分:0)
您无法从POST数据中获取value_text。一种解决方案是在通过JavaScript选择选项后填充隐藏字段。