【问题标题】:Passing value to script in gsp from drop down menu从下拉菜单中将值传递给 gsp 中的脚本
【发布时间】:2013-11-13 18:20:18
【问题描述】:

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

【问题讨论】:

    标签: javascript grails drop-down-menu controller gsp


    【解决方案1】:

    我不明白你的问题是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-26
      • 2018-01-10
      • 2015-09-29
      • 2014-05-05
      • 2012-10-24
      • 2016-02-09
      • 1970-01-01
      相关资源
      最近更新 更多