使用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获取所选选项的文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在Jquery中获取所选选项的文本值[重复]

使用 jQuery 更改所选选项 [重复]

Tkinter StringVar 获取所选选项的索引

如何使用 vuejs 获取所选选项的文本?

从组合框的值中获取选项的文本[重复]

select2 jQuery插件:获取所选选项的文本值? [复制]