【发布时间】:2011-10-09 17:05:23
【问题描述】:
我想获取 <option> 标签内的文本及其值。
示例
<select name="make">
<option value="5"> Text </option>
</select>
我使用了$_POST['make']; 并获得了5 的值,但我想同时获得值和文本。
我如何使用 PHP 做到这一点?
【问题讨论】:
我想获取 <option> 标签内的文本及其值。
示例
<select name="make">
<option value="5"> Text </option>
</select>
我使用了$_POST['make']; 并获得了5 的值,但我想同时获得值和文本。
我如何使用 PHP 做到这一点?
【问题讨论】:
为了仅使用 PHP 获取标签和值,您需要将两个参数都作为值的一部分。
例如:
<select name="make">
<option value="Text:5"> Text </option>
</select>
PHP 代码
<?php
$parts = $_POST['make'];
$arr = explode(':', $parts);
print_r($arr);
输出:
Array(
[0] => 'Text',
[1] => 5
)
这是一种方法。
【讨论】:
我一直使用一个非常优雅的解决方案,类似于已经介绍的那些,不需要很多额外的代码。
HTML
<select name="make">
<option value="1:First Option">First Option Text</option>
<option value="2:Second Option">Second Option Text</option>
<option value="3:Third Option Text">Third Option Text</option>
</select>
PHP
$value = split(':', $make)[0];
$text = split(':', $make)[1];
这种方法的好处
是的,与serialworm 的答案肯定有相似之处,但我们通过不显眼地转换为数组并立即选择所需的元素来最小化PHP 块中的代码。
在我的例子中,我在联系表单中使用了这个精确的简写代码,其中这一行(用于获取选定的部门名称)对于保持代码看起来干净至关重要。
【讨论】:
这个呢?我认为这是最好的解决方案,因为您将每个数据的字段分开。只有一个隐藏字段在每次更改时更新,避免硬编码映射。
HTML 里面的这个:
<select name='make' onchange="setTextField(this)">
<option value = '' selected> None </option>
<option value = '5'> Text 5 </option>
<option value = '7'> Text 7 </option>
<option value = '9'> Text 9 </option>
</select>
<input id="make_text" type = "hidden" name = "make_text" value = "" />
<script type="text/javascript">
function setTextField(ddl) {
document.getElementById('make_text').value = ddl.options[ddl.selectedIndex].text;
}
</script>
PHP 里面的这个:
<?php
$value = $_POST["make"];
$text = $_POST["make_text"];
?>
【讨论】:
document.getElementById('make_text').value=ddl.options[ddl.selectedIndex].text;
将文本的值设置为选项标记的值,无论是通过静态 HTML 标记还是由服务器端脚本生成。你只会通过 POST 获取 value 属性
然而,在服务器端,另一种选择是将值(“5”)映射到关联数组,即
<?php
$valueTextMap = array("5" => "Text");
$value = $_POST['make']; //equals 5
$text = $valueTextMap[$value]; //equals "Text"
?>
【讨论】:
您需要将该 Text 包含在开头的值中(例如:<option value="5_Text"> Text </option> 然后解析,或者...
您可以在页面上使用 javascript 将文本作为 POST 操作中的另一个参数提交。
【讨论】: