我需要使用带有多重选择的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中所有选定的值传递给控制器。
我该怎么办?
感谢您的宝贵帮助
答案 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;
});
您可以将值添加到全局定义的列表中。通过这种方式,您可以获得所有选择。