如何将多个选择框选择传递回HTML表单?
问题描述:
我使用Perl(和舞者)与HTML创建窗体。在我的形式我有像这样一些领域:如何将多个选择框选择传递回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
和有被来回传递(例如keywords
list_of_sentences
和这里)的参数。代码设置了两个div,一个用表单,另一个纯粹用于显示输出。提交表单时,输出显示正确,但选择字段选择不会保留。
因此,我想要做的就是让选中的'多重选择'中的所选选项保持选中状态。
举个例子,在我的“输入”关键字字段我有保留价值,因为它已经通过从.pm
文件中使用template 'main' ...
使用param("keywords")
回来。这与HTML代码中的value="<% keywords | html %>"
一起使用。 我试图对使用param("sentences")
的多重选择做同样的事情,但是这会返回一个空白字段。
为了避免这个问题的猜测,这是因为有多个选项,也许是因为我从.pm
文件中获得了选项,但我还没有找到解决方案,所以任何帮助都会受欢迎的。
答
您想在选项元素上使用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 }
仍与它摆弄周围,但肯定似乎是在正确的轨道,干杯! – dgBP 2013-03-04 16:47:16
我正在通过使用以下句子的结构: 模板'main',{句子=>(value => $ value,is_selected => 0 | 1)} '句子'是一个散列(ref),但是当我使用'sentence.value'它读取像它是一个数组的元素。有什么方式说'句子'是散列吗?我想我已经在某处看到过'key'关键字,但是在网上找不到任何示例。 – dgBP 2013-03-05 09:21:33
@bladepanthera这部分取决于你正在使用的模板引擎。你定义了一个模板引擎来使用,还是你使用'Dancer :: Template :: Simple'?如果你不使用'set template =>'语句,那么你使用'Simple'。 – Joel 2013-03-05 13:45:32