grails:具有多个select的remoteFunction

时间:2013-06-14 14:26:07

标签: ajax grails select

我需要使用带有多重选择的remoteFunction指令。 选择如下:

<g:select name="receiptItems" from="${myproject.ReceiptItem.list()}"
     multiple="multiple" optionKey="id" optionValue="description" size="5"
     value="${receiptInstance?.receiptItems*.id}" class="many-to-many"
         onchange="${remoteFunction(
            controller: 'Receipt',
            action: 'sumReceiptItems',
            params: '\'receiptItemsSelected=\' + this.value',
            onSuccess: 'updateTotalAmount(\'totalAmount\', data, \'00000\')')}"/>

我在收据控制器中有sumReceiptItems操作,该操作采用参数receiptItemsSelected并使用它来更新另一个文本字段。

问题是this.value只给我一个选择的值,即选择的最后一个。我需要将select中所有选定的值传递给控制器​​。 我该怎么办?

感谢您的宝贵帮助

2 个答案:

答案 0 :(得分:1)

只需使用jQuery's val()代替this.value即可获得所有选定项目:

params: '\'receiptItemsSelected=\' + jQuery(this).val()'

请注意,如果尚未在项目中使用jQuery,则必须导入jQuery。如果您使用的是最新的Grails版本,则只需使用<r:require module='jquery' />部分中的<head>即可。

答案 1 :(得分:0)

您可以使用JQuery获取值:

var selections = new Array();

$("#receiptItems").change(function() {
   var value = $(this).val();
   selections[selections.length] = value;
});

您可以将值添加到全局定义的列表中。通过这种方式,您可以获得所有选择。