我在模板中添加了一个复选框,并使用AJAX来监督更改。当复选框更改时,控制器中的操作被调用,我想要根据复选框设置进行不同的操作。 但我不知道是否检查过它。我打印了params列表,你可以看到是否选中了复选框,但我无法使用:
if(checkbox.checked){做某事}其他{做别的事情}
即使取消选中该复选框,我也总是会{做某事}。
Heres som代码:
<script>
$(document).ready(function(){
$( document ).on('change', '.useWeeklyVolumes', function ( event ){
$.ajax({
url: '${g.createLink( controller:'offerDetail', action:'useWeeklyVolumes' )}',
data: {ckbWeeklyVolumes:this.checked, id:this.id},
type: 'get'
}).success( function ( data ) { $( '#nono' ).html( data ); });
});
});
</script>
模板的一部分:
<label for="ckbWeeklyVolumes">
<g:message message="Specify volumes weekly"/>
</label>
<g:checkBox id="${offerDetail.id}" class="useWeeklyVolumes" name="ckbWeeklyVolumes" value="${offerDetail?.useWeeklyVolumes}" />
<g:if test="${offerDetail?.useWeeklyVolumes}">
---- Here the part of the template which is controlled by the checkBox
</g:if>
控制器操作方法:
def useWeeklyVolumes() {
println("useWeeklyVolumes - params: "+params)
def od = OfferDetail.get(params.id)
od.useWeeklyVolumes = params.ckbWeeklyVolumes
od.save(flush:true)
if (od.useWeeklyVolumes) {
println("useWeeklyVolumes - ON: ")
} else {
println("useWeeklyVolumes - OFF: ")
}
render(template: "offerDData", model: [offerDetail: od])
}
控制台打印输出:
useWeeklyVolumes - params: [ckbWeeklyVolumes:true, id:30, controller:offerDetail, format:null, action:useWeeklyVolumes]
useWeeklyVolumes - ON:
useWeeklyVolumes - params: [ckbWeeklyVolumes:false, id:30, controller:offerDetail, format:null, action:useWeeklyVolumes]
useWeeklyVolumes - ON: