我已经在这里阅读了其他问题,这些问题涉及我正在寻找的内容。但它仍然没有帮助我。 我希望在表单的选择标记的选项中有多个值,这些选项标记将信息发布到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>
答案 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,则会更容易。