我正在尝试传递从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)'
。 onComplete
调用我的脚本函数locationParameterSet(data)
:
def locationParameterSet = {
session["location_id"] = params.location_id
def location_id = params.location_id
[location_id: location_id]
}
是否有不同的方式将id
发送到gsp以便我的脚本运行?
答案 0 :(得分: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 select的/ latest / docs中,即使我记得我在那里看过它,但无论如何它不是grails的特色只是一个javascript事件。 它应该像写作一样:
var sel = document.getElementById('giveSelectAnId');
sel.onchange = function() {
locationParameterSet(this.value)
}