2014-10-01 127 views
0

我哈瓦創建一個複選框和一個文本輸入框模板動態約束:斯卡拉/ Play2 - 基於複選框值

@helper.checkbox(inputForm("live"), 'checked -> true, 'onclick -> "hideTextFields()") 
@helper.inputText(inputForm("target"), 'disabled -> true) 

當取消選中該複選框,文本字段獲得可見(反之亦然)。這是在一個名爲hideTextFields()的javascript函數中完成的。

現在,在控制器中,我需要一個約束條件,只要取消選中該複選框,該文本輸入字段就是必需的。

我有一個映射:

"live" -> boolean 
"target" -> nonEmptyText 

但這總是需要指定目標。

如何根據複選框的狀態實現文本輸入字段的動態約束。 Play是版本2.3.4。

謝謝,最好的問候!

+0

愚蠢的標籤...選擇更好 – biesior 2014-11-02 00:07:49

回答

0

退房的驗證方法是在映射,你從tuple()回來和mapping()

簡單的例子:

val sample = Form(
    tuple(
    "checkbox" -> boolean, 
    "text" -> text 
).verifying(
    "If checkbox checked text cannot be empty", 
    (tuple) => !tuple._1 || tuple._2.nonEmpty) 
) 

您可以找到「定義即席約束」下另一個例子玩框架文檔:The playframework docs