5

在下面的:

<form  action="test.php"  method="POST">  
    <select id="test" name="test">
     <option value="1">Test One</option>
     <option value="2">Test Two</option>
    </select>
</form>

在 test.php 中,我可以得到 1 或 2,如下所示:

$result=$_POST['test'];

如何使用 php 获取所选选项的文本(即“测试一”或“测试二”)

4

9 回答 9

22

这不是仅通过 PHP 就可以完成的。PHP 脚本只能“看到”发布的信息(value针对发布的selected选项)。input您可以使用 javascript 使用selected 的文本内容更改隐藏字段option,这将包含在$_POST数组中:

<form  action="test.php"  method="POST">  
    <select id="test" onchange="document.getElementById('text_content').value=this.options[this.selectedIndex].text">
     <option value="1">Test One</option>
     <option value="2">Test Two</option>
    </select>

<input type="hidden" name="test_text" id="text_content" value="" />
</form>

这将使$_POST['test_text']所选索引可用(但您还应该onchange()在页面加载时强制使用该功能,以便即使用户将选择字段保留为默认值,它也会被填充。

于 2012-08-13T00:23:02.443 回答
16

只有value表单控件的 才会发送到服务器。发送两者的简单方法是将两者都包含value

<select name="test">
    <option value="1|Test one">Test one</option>
    <option value="2|Test two">Test two</option>
</select>

进而:

$test = explode('|', $_POST['test']);

然后你最终会$test[0]成为“1”和$test[1]“Test one”。

于 2012-08-13T00:32:51.707 回答
3

你不能;该信息不会发送回服务器。您首先需要查看如何生成 HTML 并从那里获取文本。

于 2012-08-13T00:23:14.160 回答
1

它没有被发送,因此获取它的唯一方法是在 PHP 代码中将值映射到标题的数组。

于 2012-08-13T00:23:11.117 回答
1

这是我可以使用的解决方案,除非我已经有 onChange 调用函数来根据语句中选择的建筑类型显示隐藏块。

我有需要用户选择的建筑类型。几种建筑类型有一组独特的问题,例如银行分行、数据中心、法庭等。但也有许多具有相同的一组问题,我称之为“其他类型”。每个选项都有其关联的值,例如银行分行的值为“Bank_Branch”,数据中心的值为“Data_Center”,但其他类型的值为“Other_Type”。“Other_Type”的文本因建筑类型而异,例如会议中心、博物馆、表演艺术等。所以我需要值“Other_Type”来“显示”“Other_Type”DIV 块中的问题,同时使用文本在电子邮件中发送标识建筑物类型的价值,例如会议中心、博物馆、表演艺术等。

有什么方法可以使用 PHP 来获取所选项目的文本值?我已经在 HTML 中使用了以下内容

   var sele = document.getElementById('building_type');
   var seleVal = sele.options[sele.selectedIndex].value;
   var seleTxt = sele.options[sele.selectedIndex].text;
   document.getElementById("other_text").innerHTML = seleTxt;

我没有看到这样做的方法。

已解决:我可以简单地创建隐藏的 div,并在检查其他类型时为隐藏的 div 设置 innerHTML。

于 2014-10-14T20:47:46.050 回答
0

所选选项的文本未通过 HTML 表单传递。如果您想要文本,则必须将其存储在页面上的隐藏 HTML 输入中,或者您需要在 PHP 代码中添加一些业务逻辑以将值ìd转换为文本(通过 switch 语句,或通过查询数据库等)

于 2012-08-13T00:24:04.877 回答
0

不幸的是,当您提交表单和变量时,它只需要一个参数,即它的值。你需要创造价值。测试一个值,以便将其传递给 PHP 脚本。value="1" 的目的是什么,因为您可能可以在不同的属性中使用它?

于 2012-08-13T00:25:28.083 回答
0

我不是经验丰富的 php 程序员,但你可以使用 php 检查 SELECT 标记中选择的值。我不知道为什么人们说你不能。

if ( $_POST['test'] == 1) 
{ do something } 
else 
{ option value 2 is selected, do something else }

我相信这会奏效。

于 2013-09-01T15:57:47.800 回答
0

如果不需要 1、2,请尝试一下。您将获得所需的文本作为值

<form  action="test.php"  method="POST">  
    <select id="test" name="test">
     <option value="Test One">Test One</option>
     <option value="Test Two">Test Two</option>
    </select>
</form>
于 2013-09-01T16:03:55.357 回答