我正在使用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
中,并且有来回传递的参数(例如此处为keywords
和list_of_sentences
)。代码设置有两个div,一个用于表单,另一个用于显示输出。提交表单时,输出显示正确,但不保留选择字段选择。
因此,我想做的就是保持选择“多选”中所选的选择。
例如,在我的“输入”关键字字段中,我保留了值,因为它已使用.pm
使用param("keywords")
从template 'main' ...
文件传回。这适用于html代码中的value="<% keywords | html %>"
。
我尝试使用param("sentences")
对多重选择执行相同操作,但这会返回一个空白字段。
要冒这个问题的猜测,因为有多个选项,可能是因为我从.pm
文件开始获取选项,但我还没有找到解决方案,所以欢迎任何帮助。
答案 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 }