使用Playframework斯卡拉@select模板 - onchange事件(Using th

2019-08-17 20:26发布

我使用与斯卡拉playframework 2.0,我面临着许多问题与@select模板。 所以,我有什么是@select字段作为表的一部分(表不应该是有趣这里):

@select(
Form("<variable of select 1>"),
options = options(<call of function which returns a list>),
'_default -> "--- stupid select templates ---",
'_error -> Form.globalError
)

现在我有另一种选择。 重要的这一个是 - 我想从一个函数,它获得的第一个@select作为参数的实际值填充它。

 @select(
    Form("<other name of variable>"),
    options = options(<function(<variable of select 1>)>),
    '_default -> "--- stupid select templates ---",
    '_error -> Form.globalError
    )

所以我真正需要的是某种“的onchange” envent为@select领域。 另一个问题是,该playframework无法读取@select的“'_default”值(当我设置的默认值,并尝试在表单中使用它,它就会被算作无)

注:这两个@selects都在相同的HTML网站,都属于相同的形式

是否有人知道一种解决方法吗? 或可能的例子吗?

Answer 1:

一个例子,其中default工作对我来说,也如果车主充满主人将是可见的,而不是默认值。

@select(editForm("owner.id"),options(Task.owners), 'id -> "owner", 'class -> "input-xlarge", '_label -> Messages("owner"), '_default -> Messages("make.choice"), 'showConstraints -> true, '_help -> "")

但我不认为onchange是可能的,从服务器端模板。 您需要使用JavaScript / jQuery来做到这一点。



Answer 2:

@adis答案是正确的。 如果要动态填充基于刚选择的值下拉列表中,你有两个选择:

1)触发形式,当第一选择进行提交,并用它来填充下一个下拉或2)使用JavaScript和可能的Ajax调用动态地做到这一点

第一个选项是非常丑陋的,因为它需要您重新加载和重新填充表单。 这可能会导致其他验证相关的问题,更何况,这是一个非常90年代的解决方案,所以我不会推荐它。

这样的事情应该帮助... 填充一个下拉列表基于另一个选择



文章来源: Using the Playframework Scala @select template - onchange event