【问题标题】:Using JavaScript in params attribute in Grails在 Grails 的 params 属性中使用 JavaScript
【发布时间】:2013-02-27 11:13:54
【问题描述】:

希望有人能提供帮助。

我有以下不被接受的代码:

<g:link title="Periodendaten speichern" action="speicherePeriodendaten" params="'\'pStart=\' + $('#periodeStart'${i}').value'" id="${zwzPeriode.id}">

使用 $('#periodeStartX'),我试图获取 ID 为 periodeStartX 的 DOM 元素,其中 X 是 i 的当前值。 i 来自 g:each-Tag (status=i)

我知道以下是有效的:

<g:link title="Periodendaten speichern" action="speicherePeriodendaten" params="'\'pStart=\' + this.value'" id="${zwzPeriode.id}">

但是在上面的场景中,我不想拥有当前Tag的值,我想要另一个Tag的值。

因此,我的问题是,我不明白如何正确地在这里逃脱。

如果有任何好的提示,我将不胜感激。

最好的问候, 迈克尔

【问题讨论】:

  • 您确定params="'\'pStart=\' + this.value'" 有效吗?对于这样的代码,你在客户端得到了什么?
  • 不再...至少在 g:link 中。我已经看到我在 g:remoteFunction-Tag 中以这种方式使用它并且 g:link 忽略了 params 属性?至少在 Firebug 中,我看不到使用了 params。此外,g:link 在生成响应时被评估一次,所以我认为必须在这里再次结合 g:link 和 g:remoteFunction

标签: javascript grails params


【解决方案1】:

下面的另一种方法:

<r:require module="jquery"/>

<input id="periodeStart1" value="V1" />
<input id="periodeStart2" value="V2" />

<%-- Sample variables --%>
<g:set var="i" value="1" />
<g:set var="id" value="42" />               

<%-- Resolve pStart "onclick" event --%>                
<a href="${createLink(action: 'speicherePeriodendaten', params: [id: zwzPeriode.id])}" onclick="this.href=this.href+'?pStart='+$('#periodeStart${i}').val()">Sample Link</a>

Edit1:另外,您可能应该用 encodeURIComponent() 包装 $('#periodeStart${i}').val()。以防万一。

【讨论】:

  • 这看起来不错,当点击事件发生时改变href。谢谢
【解决方案2】:

您需要转义 $ 符号,因为 Groovy 会尝试将其视为表达式:

<g:link title="Periodendaten speichern" action="speicherePeriodendaten" params="'\'pStart=\' + \$('#periodeStart'${i}').value'" id="${zwzPeriode.id}">

【讨论】:

  • 这个我试过了,但我现在了解到的是参数是在响应生成时评估的,而不是在用户点击链接时评估的。所以javascript永远不会在用户点击它的时候运行。所以,我认为 g:link 在这里根本不可用。
猜你喜欢
  • 2013-09-06
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多