如何用 JavaScript 设置 p:selectBooleanCheckbox 的值

How to set value of p:selectBooleanCheckbox with JavaScript

当焦点在复选框上并且用户按下回车键时,我需要根据其状态使值处于活动状态或非活动状态,并且还需要将焦点放在按钮上,焦点有效但值未更新,这是我目前所拥有的:

SelectBooleanCheckBox:

<p:selectBooleanCheckbox id="sbcActivoProp" widgetVar="sbcActivoPropWV" onchange="document.getElementById('frmGuardarActualizarPropiedad:btnGuardarPropiedad').focus(); return false;"
    binding="#{programaAccesoMB.sbcActivoProp}"
    label="#{etiquetasMsg.general_activo}" disabled="false">
</p:selectBooleanCheckbox>

Javascript:

<script type="text/javascript">
                                 var focusSbcActivoProp = document.getElementById('frmGuardarActualizarPropiedad:sbcActivoProp_input');           
                                    if (focusSbcActivoProp != null) {
                                     focusSbcActivoProp.onkeydown = function(event) {
                                     if (event.keyCode == 13) {
                                         var ischecked = sbcActivoPropWV.input.is(':checked');
                                         if(ischecked){
                                             console.log('is checked');
                                             document.getElementById('frmGuardarActualizarPropiedad:sbcActivoProp').value=false;
                                         }else{
                                             console.log('is not checked');
                                             document.getElementById('frmGuardarActualizarPropiedad:sbcActivoProp').value=true;
                                             }
                                         document.getElementById('frmGuardarActualizarPropiedad:btnGuardarPropiedad').focus();
                                     }
                                     return false;
                                     }
                                };
                            </script> 

PrimeFaces documentation 有答案给你:

Client Side API

Widget: PrimeFaces.widget.SelectBooleanCheckbox

Method   Params     ReturnType  Description 
check()     -       void        Checks the checkbox.
uncheck()   -       void        Unchecks the checkbox.
toggle()    -       void        Toggles check state.

我检查了一下,这至少适用于 7.0 和 8.0(没有寻找更早的版本,但尝试起来非常简单)

感谢@Kukeltje 引用的文档,javascript 代码是这样结束的:

<script type="text/javascript">
                                 var focusSbcActivoProp = document.getElementById('frmGuardarActualizarPropiedad:sbcActivoProp_input');           
                                    if (focusSbcActivoProp != null) {
                                     focusSbcActivoProp.onkeydown = function(event) {
                                     if (event.keyCode == 13) {
                                        sbcActivoPropWV.toggle();
                                        document.getElementById('frmGuardarActualizarPropiedad:btnGuardarPropiedad').focus();
                                     }
                                     return false;
                                     }
                                };
                            </script>