1

将此发布到 Play 用户组;我解释了唯一的观点,所以希望得到一个观点,或者甚至是一个答案;-)

嵌套表单很棒,但是有一个小故障将样板添加到 javascript 或 scala 模板中。

例如,给定:

@inputText(field = _form("user.email"),
    '_label-> "Email Address*",
    'class-> "required email",
    'placeholder-> "jdoe@gmail.com"
)

生成的输入字段类似于:

<input id="user_email" name="user.email" ...>

现在,当您想在客户端验证电子邮件地址时,您必须引用 DOM id:$('#user_email')

哪里$('#email')会更自然。

我知道我可以在模板中手动设置 id 属性,但默认情况下,我更愿意从 id 属性中删除嵌套名称(在这种情况下为用户)。

查看 github views helper directory,我没有找到可以访问生成的 id 的位置(即我需要重载哪个文件以及如何重载)。

任何人都知道如何解决这个问题和/或有更好的方法吗?

4

1 回答 1

1

这是自动生成字段 ID 的位置:

https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/data/Form.scala#L274

实际上没有任何方法可以覆盖该行为,但您可以编写自己的@inputText帮助程序,在生成 HTML 时从 ID 中删除“user_”部分。

基本上复制粘贴默认助手并替换

<input type="text" id="@id" ...

使用您自己的代码,例如

<input type="text" id="@processFieldId(id)" ...

或(未经测试!):

<input type="text" id="@(id.split('_').last)" ...

然后只需在模板中导入您的自定义助手,并像使用@inputText.

于 2012-08-10T00:28:36.440 回答