Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从控制器获取复选框状态_Javascript_Grails_Checkbox_Controller - Fatal编程技术网

Javascript 从控制器获取复选框状态

Javascript 从控制器获取复选框状态,javascript,grails,checkbox,controller,Javascript,Grails,Checkbox,Controller,我的Grails项目我有一个复选框。我想在复选框的onCheck方法中调用remoteFunction,如下所示: if(checkbox.isChecked) { //do something } else { //do some other thing } 事实上,我不知道如何在选中/取消选中复选框后获取控制器中复选框的状态。是否需要使用一些javascript代码? 有什么建议吗 编辑: 这是复选框 <g:checkBox name="hasStampDuty" v

我的Grails项目我有一个复选框。我想在复选框的onCheck方法中调用remoteFunction,如下所示:

if(checkbox.isChecked)
{
    //do something
}
else
{
    //do some other thing
}
事实上,我不知道如何在选中/取消选中复选框后获取控制器中复选框的状态。是否需要使用一些javascript代码? 有什么建议吗

编辑: 这是复选框

<g:checkBox name="hasStampDuty" value="${receiptInstance?.hasStampDuty}"
            onclick="${remoteFunction(
                    controller: 'Receipt',
                    action: 'addStampDuty',
                    params: '\'id=\' + this.id+\'ischecked=\'+this.checked',
                    onSuccess: 'updateTotalAmount(\'totalAmount\', data, \'00000\')')}"
/>

但id始终为null…

在正常情况下,复选框的状态将传递给参数中的操作。如上面的注释所述,是否存在形式为${fieldName}.selected的参数表示是否选中了该复选框。我同意这有点尴尬。然而,如果你直接弄乱了参数,那么你可能已经把合同弄糟了

您可以将以下代码放在操作的开始处,以准确查看在参数中传递的内容:

   log.info("Executing \"blah\" action.")
   params.each { log.info("Param ${it.key} = {$it.value}") }
作为旁注,如果您想在所有动作上都这样做,那么创建一个过滤器—请参见Grails过滤器和横切


最后,我认为Grails AJAX包装器标记已经被弃用,您可能应该避免使用它们。只需使用jquery或任何您喜欢的AJAX客户端支持发布表单,并让表单字段按照正常的Grails约定填充参数。您应该阅读

控制器中复选框的状态是元素是否在参数中带值退出。例如,如果您有一个名为“something”的元素,并且在表单发送到控制器参数时对其进行了检查。something将有一个值。如果未选中,则params.something将没有值。事实上,我需要在sumbit之前选中复选框,因此params没有params.something您可能需要重新表述您的问题,因为您说过在控制器中获取复选框的当前状态。
   log.info("Executing \"blah\" action.")
   params.each { log.info("Param ${it.key} = {$it.value}") }