在HTML中选择具有多个值和名称的表单

时间:2014-08-13 15:21:27

标签: html forms select

是否有可能,选择表单中的一个选项返回2个具有2个名称的值? 我有f.e。:

<form name="form1" action="Servlet1" method="get">
    <select class="class1" name="name1" onChange="javascript:document.form1.submit();">
        <option value="value1">Test1</option>
        <option value="value2">Test2</option>
    </select>
</form>

如果有人在Test1上点击,我希望表单返回name1 = value1&amp; name2 = value2,而不仅仅是一个值。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以采取多种方法。

最简单的只是通过在服务器上查找来处理它。

my %values = (
    value1 => { foo => 1, bar => 2 },
    value2 => { foo => 3, bar => 4 },
)

my $select_value = $q->param('name1');
my $foo = $values{$select_value}->{foo};
my $bar = $values{$select_value}->{bar};

或者,使用结构化数据格式(例如JSON)并将其编码为值:

<option value="{&quot;bar&quot;:2,&quot;foo&quot;:1}">Test1</option>

然后在服务器上对其进行解码:

my $select_value = $q->param('name1');
my $decoded_value = from_json($select_value);
my $foo = $decoded_value->{foo};
my $bar = $decoded_value->{bar};

您还可以应用一堆客户端JavaScript,在提交表单时使用DOM生成隐藏输入,但我不建议采用这种方法。

答案 1 :(得分:0)

这可能不是最好的方法,但您始终可以将两个值都放在一个值属性中。例如,您可以尝试:

<select>
  <option value="name1.name2">Test1
  <option value="...">Test2
</select>

然后,您将在javascript中解析出不同的值。

这是一个有趣的事实:您不需要HTML 5中的标签。浏览器会为您关闭元素!