使用php获取所选选项的文本[重复]
Posted
技术标签:
【中文标题】使用php获取所选选项的文本[重复]【英文标题】:get the text of the selected option using php [duplicate] 【发布时间】:2012-08-13 00:22:01 【问题描述】:如下:
<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 获取所选选项的文本(即“测试一”或“测试二”)
【问题讨论】:
如果你想要文本,为什么不把文本作为值呢? 你介意说出具体情况吗(即为什么你需要两者)?也许我们可以集思广益。 如果您想在 javascript 中使用 1 和 2 值,您可以将其分配给不同的属性,例如 title、alt 或任何您想要的。 我认为这是一个错字,但您的select
元素缺少其(强制)name
属性,该属性应为 id
(更新后应为 test
)。
我们可以为您提供您想要的所有可能性,但在您告诉我们您真正想要通过传递这两个值来实现什么之前,没有人可以给您最好的答案。
【参考方案1】:
这不是仅通过 PHP 就可以完成的。 PHP 脚本只能“看到”发布的信息(发布的selected
选项的value
)。您可以使用 javascript 将隐藏的 input
字段更改为所选 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()
函数,以便即使用户将选择字段保留为默认值,它也会被填充。
【讨论】:
这对于不支持 JS 的设备是如何工作的? @powerbuoy - 它没有。这些天来这是一个罕见的问题,但你的问题是更好的解决方案 (+1)【参考方案2】:只有表单控件的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]
是“测试一”。
【讨论】:
【参考方案3】:你不能;该信息不会发送回服务器。您首先需要查看如何生成 html 并从那里获取文本。
【讨论】:
【参考方案4】:它没有被发送,因此获取它的唯一方法是在您的 PHP 代码中将值映射到标题。
【讨论】:
【参考方案5】:这是我可以使用的解决方案,但我已经有 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。
【讨论】:
我说得太早了:我加了: 然后设置 document.getElementById("hidden_text").value = 选择文本;如果我使“hidden_text”文件可见,那么我想要的值就在那里。但是当我尝试使用它时, $_POST['hidden_text'] 是空的。任何想法为什么 $_POST['hidden_text'] 会是空的?【参考方案6】:所选选项的文本未通过 HTML 表单传递。如果您想要文本,则必须将其存储在页面上的隐藏 HTML 输入中,或者您需要在 PHP 代码中添加一些业务逻辑以将 ìd
的值转换为文本(通过 switch 语句,或通过查询数据库等)
【讨论】:
【参考方案7】:不幸的是,当您提交一个表单和一个变量时,它只需要一个参数,即它的值。你需要创造价值。测试一个值,以便将其传递给 PHP 脚本。 value="1" 的用途是什么,因为您可能可以在不同的属性中使用它?
【讨论】:
【参考方案8】:我不是一个有经验的 php 程序员,但你可以用 php 检查 SELECT 标记中选择的值。 我不知道为什么人们说你不能。
if ( $_POST['test'] == 1)
do something
else
option value 2 is selected, do something else
我相信这会奏效。
【讨论】:
【参考方案9】:如果不需要 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>
【讨论】:
以上是关于使用php获取所选选项的文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章