如何在g:链接中获取当前选择的选择框?

时间:2011-05-28 21:15:21

标签: grails

<g:select name="confer" from="${orig}" optionKey="id" value="ola"  />

<g:link controller="conferenceUser" action="addFavourite" params="[confer: confer]">Some text</g:link>

如何从选择框中获取当前选择以传递g:link的参数?

2 个答案:

答案 0 :(得分:3)

g:link params在页面渲染时设置。您将需要一些javascript,它会对选择框的select事件做出反应。在http://api.jquery.com/change/查看jQuery Change方法,并查看Change URL parameters如何操作url查询参数。

另一种方法是拦截click事件并获取select元素的当前值,然后继续。

答案 1 :(得分:0)

正如劳夫齐特所说,在这种情况下,有必要使用javascript。 params =“ [...]”渲染时将成为查询字符串,因此在您的情况下,有必要截取所选选项的值并将其添加到查询字符串中。以下是基本的实现。从如何在HTML中呈现这些grails标签开始,您可以尝试

假设您的示例将呈现以下内容:

<select name="confer" id="confer">
    <option value="1">confer 1</option>
    <option value="2">confer 2</option>
    <option value="3">confer 3</option>
</select>

<a href="controller/action" id="anchor">Some text</a>

并假设您必须在加载视图期间分配选定选项的值,并且在更改选择选项时,可以尝试以下脚本

<script>
    const anchor = document.querySelector('#anchor');
    const confer = document.querySelector('#confer');

    confer.addEventListener('change', event => addParams());

    function addParams() {
        const host = getHost();

        anchor.href = `${host}?confer=${confer.value}`
    }

    function getHost() {
        return window.location.origin;
    }

    addParams()
</script>

可测试的版本

const anchor = document.querySelector('#anchor');
const confer = document.querySelector('#confer');

confer.addEventListener('change', event => addParams());

function addParams() {
    const host = getHost();

    anchor.href = `${host}?confer=${confer.value}`
}

function getHost() {
    return window.location.origin;
}

addParams()
<select name="confer" id="confer">
    <option value="1">confer 1</option>
    <option value="2">confer 2</option>
    <option value="3">confer 3</option>
</select>

<a href="controller/action" id="anchor">Some text</a>

为了可视化修改后的参数,您必须检查锚元素