4

我正在生成一个隐藏字段,如下所示:

@helper.input(_form("userID"), '_label-> None) { (id, name, value, args) =>
  <input type="hidden" name="@name" id="@id" value="@value" @toHtmlArgs(args)>
}

除了创建 div 包装块元素这一事实之外,哪个工作正常,它在表单中创建视觉空白空间,看起来不太好 - 如何在没有 div 包装的情况下显示隐藏的输入元素?

我知道我可以 jQuery 隐藏父 div 包装器,但我不想一开始就生成它。

4

4 回答 4

14

@helper.input在这种情况下,您不需要使用 a 。尝试这个:

@defining(_form("userID")) { uidField =>
  <input type="hidden" name="@uidField.name" id="@uidField.id" value="@uidField.value">
}
于 2012-06-30T11:53:42.920 回答
4

尽管问题已经得到解答,但我想举一个完整的例子,因为这对我有很大帮助。

您可以在名为“app/views/helper/inputHidden.scala.html”的文件中定义自己的隐藏输入助手,该文件如下所示:

@**
* Generate a hidden HTML input.
*
* Example:
* {{{
*   @inputHidden(field = myForm("name"), args = 'data-ref -> 0)
* }}}
*
* @param field The form field.
* @param args Set of extra attributes.
* @param handler The field constructor.
*@
@(field: play.api.data.Field, args: (Symbol,Any)*)(implicit handler: FieldConstructor, lang: play.api.i18n.Lang)

@id = @{ args.toMap.get('id).map(_.toString).getOrElse(field.id) }
@inputType = @{ args.toMap.get('type).map(_.toString).getOrElse("hidden") }
@htmlArgs = @{ args.filter(arg => !arg._1.name.startsWith("_") && arg._1 != 'id).toMap.filter(_._1 != 'type) }

<input type="@inputType" id="@id" name="@field.name" value="@field.value" @toHtmlArgs(htmlArgs)>

这允许您在所有视图中重用代码,并为data-ref="..."隐藏字段提供额外的参数。

于 2013-02-07T10:36:08.420 回答
1

好的,也可以这样做:

<input type="hidden" name="foo" value="@{_form("foo").value.map(x=>x).getOrElse("")}">
于 2012-06-30T11:45:18.547 回答
1

使用原始 html 作为以前的答案建议在某些情况下效果很好,但不要忘记隐藏的输入可能需要验证(例如,如果它填充了 JavaScript 以响应某些用户交互,就像某些日期选择器所做的那样)。如果您在该字段上有验证错误,则提交将失败,但不会有任何视觉队列说明原因。

您可以编写额外的 html 来显示隐藏字段的错误,但如果该类不存在,我实际上会坚持@helper.input使用 css 隐藏输入。error你不需要javascript来做到这一点。

于 2013-09-20T00:31:08.230 回答