如何获得下拉/选择选项具有多个值

时间:2012-01-28 22:08:20

标签: php forms select option

我已经在这里阅读了其他问题,这些问题涉及我正在寻找的内容。但它仍然没有帮助我。 我希望在表单的选择标记的选项中有多个值,这些选项标记将信息发布到iframe可供访问者查看的其他文件中。我想要做的例子:

以下内容位于文件中: Form.php

<div>
<form action"blank.php" method="post" target="box">
<select name="g1">
<option name="g1" value="Value 1, Value 2"> Text </option>
<option name="g1" value="Value 1, Value 2"> Text Blah </option>
</select>
<input type="submit" />
</form>
</div>
<iframe src="blank.php" name="box"></iframe>

以下是想要出现在 blank.php 上的一长串内容,这些内容可由iframe看到。

选项1或2的值应该如下所示

  

[值1] [值2]

示例:

它是一个下拉菜单,当您选择一个选项时,它会发布两个单独的值。 就像我选择了一个选项 Hola - hello 一样,它会发布:

  

[Hola]表示[Hello]。

并且选项标记的值为:

<option name="g1" value="Hola, Hello">Hola - Hello</option>

3 个答案:

答案 0 :(得分:2)

听起来您想要构建一个允许多个值的表单字段数组。请阅读PHP manual了解更多信息。

从手册:

  

如何从选定的多个HTML标记中获取所有结果?

     

在   在HTML结构中选择多个标记允许用户选择   列表中的多个项目。然后将这些项目传递给操作   表单的处理程序。问题是他们都通过了   相同的小部件名称即。

<select name="var" multiple="yes">
     

每个选定的选项都将以动作处理程序的形式到达:

var=option1
var=option2
var=option3
     

每个选项都会覆盖前一个$ var变量的内容。   解决方案是使用PHP的“表单元素数组”功能。该   应使用以下内容:

<select name="var[]" multiple="yes">
     

这告诉PHP将$var视为一个数组并且每个分配一个   值var[]将一个项添加到数组中。第一项成为   $var[0],下一个$var[1]等。可以使用count()函数   确定选择了多少个选项,sort()功能可以   用于在必要时对选项数组进行排序。请注意,如果你是   使用JavaScript,元素名称上的[]可能会导致问题   当您尝试按名称引用元素时。使用它的数字形式   替代元素ID,或将变量名称用单引号括起来   使用它作为元素数组的索引,例如:

variable = document.forms[0].elements['var[]'];

答案 1 :(得分:1)

首先,您的每个name元素都不需要<option>属性。只需<select>框。

其次,我认为您需要的只是方便的花花公子explode function。你会得到这样的价值......

$values = $_POST['g1'];

...然后将它们拆分成这样的数组......

$values = explode(', ', $values);

...最后只需访问这样的值:

$value1 = $values[0];
$value2 = $values[1];

答案 2 :(得分:0)

我知道这是在PHP部分,但是你想要做的事情将更容易用javascript实现。如果您将iframe代码更改为:

<div id="valueDisplay"></div>

并向选择

添加ID和侦听器
<select name="g1" id="dropDown" onchange="showValues()">
<option name="g1" value="1"> Text </option>
<option name="g1" value="2"> Text Blah </option>
</select>

你只需写一个像这样的小脚本并把它放在身体的某个地方:

<script type="text/javascript">
function showValues(){
    var outDiv = document.getElementById('valueDisplay');
    var selectValue = document.getElementById('dropDown').value;
    var divText;
    if(selectValue == 1) divText = '[ Value 1 ][ Value 2 ]';
    if(selectValue == 2) divText = '[ Value 1 ][ Value 2 ]';
    outDiv.innerHTML = divText;
}
</script>

要实现你想要用iframe做的事情会更加困难。它需要您使用javascript / jquery在iframe中发布数据。

请注意,使用onchange =“”不再是添加侦听器的可接受方法。如果您不熟悉javascript,则会更容易。