从下拉菜单将值传递给 gsp 中的脚本

Passing value to script in gsp from drop down menu

本文关键字:gsp 脚本 下拉菜单 值传      更新时间:2023-09-26

我目前正在尝试传递从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,以便我的脚本运行?

我对你的问题不明白的一件事是:

为什么要再次将 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)
   }