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