【问题标题】:Using the Playframework Scala @select template - onchange event使用 Playframework Scala @select 模板 - onchange 事件
【发布时间】:2013-03-11 05:45:20
【问题描述】:

我正在使用带有 scala 的 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
    )

所以我真正需要的是@select 字段的某种“onchange”事件。 另一个问题是,playframework 无法读取@select 的“'_default”值(当我设置默认值并尝试在表单中使用它时,它被计为无)

注意:两个 @selects 都在同一个 html 站点上,并且都属于同一个表单

有人知道这里的解决方法吗?或可能的例子?

【问题讨论】:

    标签: html scala playframework playframework-2.0


    【解决方案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 来执行此操作。

    【讨论】:

    • 谢谢,我会在星期一测试这个
    【解决方案2】:

    @adis 的回答是正确的。如果您想根据刚刚选择的值动态填充下拉列表,您有两种选择:

    1) 在第一次选择发生时触发表单提交,并使用它来填充下一个下拉列表 要么 2) 使用 Javascript 和可能的 ajax 调用来动态执行此操作

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

    这样的事情应该会有所帮助... Populate one dropdown based on selection in another

    【讨论】:

      猜你喜欢
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 2014-09-09
      相关资源
      最近更新 更多