2013-03-04 187 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