使用php获取所选选项的文本

Max*_*lah 4 html javascript php

在下面的:

<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>
Run Code Online (Sandbox Code Playgroud)

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

$result=$_POST['test'];
Run Code Online (Sandbox Code Playgroud)

如何使用php获取所选选项的文本(即"Test One"或"Test Two")

Ben*_*n D 15

这不是单靠PHP可以完成的事情.PHP脚本只能"看到"发布的信息(发布valueselected选项).您可以使用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>
Run Code Online (Sandbox Code Playgroud)

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

  • @powerbuoy - 它没有.这些天来这是一个罕见的问题,但你的是更好的解决方案(+1) (2认同)

pow*_*uoy 13

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

<select name="test">
    <option value="1|Test one">Test one</option>
    <option value="2|Test two">Test two</option>
</select>
Run Code Online (Sandbox Code Playgroud)

然后:

$test = explode('|', $_POST['test']);
Run Code Online (Sandbox Code Playgroud)

那么你最终将$test[0]成为"1"并$test[1]成为"测试者".