如何将多个选择框选择传回HTML表单?

时间:2013-03-04 15:45:42

标签: html forms perl html-select

我正在使用Perl(和Dancer)和HTML来创建表单。在我的表格上我有一些像这样的字段:

<input type="text" name="keywords" id="keywords" value="<% keywords | html %>"/>

<select multiple="multiple" id="sentences" name="sentences" size="3"/>
    <% IF list_of_sentences %>
         <% FOREACH sentence IN list_of_sentences %>
              <option value=<% sentence %>/>
         <% END %>
    <% END %>
</select>

当然,这些是在他们自己的部门内部,并且有更多的代码,但这些是我所拥有的基本要素。

这些内容位于使用main.tt进行交互的myApp.pm中,并且有来回传递的参数(例如此处为keywordslist_of_sentences)。代码设置有两个div,一个用于表单,另一个用于显示输出。提交表单时,输出显示正确,但不保留选择字段选择。

因此,我想做的就是保持选择“多选”中所选的选择。

例如,在我的“输入”关键字字段中,我保留了值,因为它已使用.pm使用param("keywords")template 'main' ...文件传回。这适用于html代码中的value="<% keywords | html %>"。 我尝试使用param("sentences")对多重选择执行相同操作,但这会返回一个空白字段。

要冒这个问题的猜测,因为有多个选项,可能是因为我从.pm文件开始获取选项,但我还没有找到解决方案,所以欢迎任何帮助。

1 个答案:

答案 0 :(得分:2)

您想在option元素上使用selected="selected"属性。我建议传递句子的名称和标志,说明该选项是否应该处于选定状态。例如:

<% IF list_of_sentences %>
  <% FOREACH sentence IN list_of_sentences %>
    <option value="<% sentence.value %>"<% IF sentence.is_selected %> selected="selected"<% END %> />
  <% END %>
<% END %>

并为您的句子使用以下数据结构:

{ value => $value, is_selected => 0|1 }