Как я могу получить текущий выбор selectBox для использования в ссылке g:? - PullRequest
0 голосов
/ 29 мая 2011
<g:select name="confer" from="${orig}" optionKey="id" value="ola"  />

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

Как получить текущий выбор из selectBox для передачи в параметрах g: link?

Ответы [ 2 ]

3 голосов
/ 29 мая 2011

Параметры g: ​​link устанавливаются при визуализации страницы.Вам понадобится JavaScript, который реагирует на событие выбора в окне выбора.Изучите метод jQuery Change по адресу http://api.jquery.com/change/ и посмотрите Изменить параметры URL о том, как манипулировать параметрами URL-запроса.

Другим способом может быть перехват события click и выборкатекущее значение элемента select и затем продолжить.

0 голосов
/ 23 августа 2018

Как упоминает laufzeit, в этом сценарии необходимо будет использовать javascript. params = "[...]" когда рендеринг станет строкой запроса, поэтому в вашем случае необходимо будет перехватить значение выбранной опции и добавить его в строку запроса. Ниже приведена базовая реализация. Начиная с того, как эти теги grails будут отображаться в html, вы можете попробовать

Предполагается, что ваш пример будет отображать что-то вроде этого:

<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>

Для визуализации измененных параметров необходимо проверить элемент привязки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...