2013-03-04 189 views
0

我使用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和有被来回传递(例如keywordslist_of_sentences和这里)的参数。代码设置了两个div,一个用表单,另一个纯粹用于显示输出。提交表单时,输出显示正确,但选择字段选择不会保留。

因此,我想要做的就是让选中的'多重选择'中的所选选项保持选中状态。

举个例子,在我的“输入”关键字字段我有保留价值,因为它已经通过从.pm文件中使用template 'main' ...使用param("keywords")回来。这与HTML代码中的value="<% keywords | html %>"一起使用。 我试图对使用param("sentences")的多重选择做同样的事情,但是这会返回一个空白字段。

为了避免这个问题的猜测,这是因为有多个选项,也许是因为我从.pm文件中获得了选项,但我还没有找到解决方案,所以任何帮助都会受欢迎的。

回答

2

您想在选项元素上使用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 } 
+0

仍与它摆弄周围,但肯定似乎是在正确的轨道,干杯! – dgBP 2013-03-04 16:47:16

+0

我正在通过使用以下句子的结构: 模板'main',{句子=>(value => $ value,is_selected => 0 | 1)} '句子'是一个散列(ref),但是当我使用'sentence.value'它读取像它是一个数组的元素。有什么方式说'句子'是散列吗?我想我已经在某处看到过'key'关键字,但是在网上找不到任何示例。 – dgBP 2013-03-05 09:21:33

+0

@bladepanthera这部分取决于你正在使用的模板引擎。你定义了一个模板引擎来使用,还是你使用'Dancer :: Template :: Simple'?如果你不使用'set template =>'语句,那么你使用'Simple'。 – Joel 2013-03-05 13:45:32