在Grails的params属性中使用JavaScript

在Grails的params属性中使用JavaScript,javascript,grails,params,Javascript,Grails,Params,我希望有人能帮忙 我有以下不被接受的代码: <g:link title="Periodendaten speichern" action="speicherePeriodendaten" params="'\'pStart=\' + $('#periodeStart'${i}').value'" id="${zwzPeriode.id}"> 使用$('#periodeStartX'),我试图获取ID为periodeStartX的DOM元素,其中X是I的当前值。i来自g:每个标记

我希望有人能帮忙

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

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

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

我知道以下方法正在发挥作用:

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

但是在上面的场景中,我不想要当前标记的值,我想要另一个标记的值

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

如果有什么好的提示,我将不胜感激

致以最良好的祝愿,
Michael

您需要避开$sign,因为Groovy将尝试将其视为表达式:

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

下面是另一种方法:

<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()。以防万一。

您确定
params=“\'pStart=\'+this.value'”
正在工作吗?这样的代码在客户端会得到什么?不再是了。。。至少在g:link中。我在g:remoteFunction标记中看到了这样的用法,g:link忽略了params属性?至少在Firebug中,我看不到使用了params。而且,在生成响应时,g:link会被评估一次,所以我认为必须在这里再次将g:link与g:remotefunction结合起来我已经尝试过了,但我现在学到的是,params是在响应生成时评估的,而不是在用户点击链接时评估的。所以javascript永远不能在用户点击它的时候运行。所以,我认为g:link在这里根本不可用。这看起来不错,当点击事件发生时更改href。谢谢