0

我目前正在尝试传递从g:select下拉菜单中选择的值,并将其传递给与下拉菜单位于同一 gsp 内的脚本。出于某种原因,运行我的脚本的调用仅在我调用函数本身并且不从我的控制器函数向它传递值时才起作用,控制器函数正在获取我需要传递给脚本的值。我很确定问题出在我将值从控制器传递到我的 gsp 以便然后可以将其发送到我的脚本的地方,但我不确定为什么它在传递时不起作用。

这是我的脚本的代码:

function locationParameterSet(data){
    alert("This worked " + data);
}

这是我的g:select下拉菜单的代码:

<g:select name="locationSelection" from="${location_names}" value="${params.site_id}"
    optionKey="location_id" optionValue="short_name" noSelection="['': '----Site----']"
    onchange="${remoteFunction(controller: 'term', action: 'locationParameterSet',
    onComplete: 'locationParameterSet(data)', params: '\'location_id=\' + this.value',
    options: '[asynchronous: false]')}"/>

这是从下拉菜单中选择选项时运行的方法。一旦控制器内部的方法完成,它就会id返回g:select并运行。调用我的脚本onComplete: 'locationParameterSet(data)'函数:onCompletelocationParameterSet(data)

def locationParameterSet = {
    session["location_id"] = params.location_id
    def location_id = params.location_id
    [location_id: location_id]
}

是否有不同的方式将其发送id到 gsp 以便我的脚本运行?

4

1 回答 1

0

关于您的问题,我不明白的一件事是:

为什么要再次将 id 发送给 gsp ?您已经在选择中拥有它。

如果 onchange 处理程序有效,它应该很简单:

<g:select name="locationSelection" from="${location_names}" value="${params.site_id}"
    optionKey="location_id" optionValue="short_name" noSelection="['': '----Site----']"
    onchange="locationParameterSet(this.value)"/>

不知何故,onchange 不包含在 grails 选择的 /latest/docs 中,即使我记得我在那里看到过,但无论如何它不是 grails 功能,它只是一个 javascript 事件。它应该和写作一样:

   var sel = document.getElementById('giveSelectAnId');
   sel.onchange = function() {
      locationParameterSet(this.value)
   }
于 2013-11-13T22:38:14.747 回答