【问题标题】:How do I get a drop down/select option have Multiple Values如何获得具有多个值的下拉/选择选项
【发布时间】:2012-02-21 08:56:59
【问题描述】:

我在这里阅读了其他与我正在寻找的内容有关的问题。但它仍然没有帮助我。 我想在表单的选择标记选项中有多个值,该选项会将信息发布到 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>

【问题讨论】:

  • 为您的字段指定一个以 [] 结尾的名称(例如

标签: php forms select option


【解决方案1】:

首先,您的每个&lt;option&gt; 元素不需要name 属性。只是&lt;select&gt; 框。

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

$values = $_POST['g1'];

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

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

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

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

【讨论】:

  • 我如何将其放入完整的工作代码中?对不起,我真的一点都不熟悉 PHP。
  • 这将在您的 blank.php 页面中。把它放在顶部,然后你就可以使用 $value1$value2 了。因此,例如,您可以这样做 echo "[$value1] means [$value2]";
【解决方案2】:

我知道这是在 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>

你只要写一个像这样的小脚本,然后把它放在body的某个地方:

<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,这会更容易。

【讨论】:

  • 我认为使用 target 属性,就像 OP 所做的那样,完全可以处理提交数据。
【解决方案3】:

听起来您想构建一个允许多个值的表单字段数组。阅读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[]'];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-20
    • 2018-05-20
    • 2021-05-19
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多