PrimeFaces.current().focus 不在 commandButton 上工作

PrimeFaces.current().focus Not working on commandButton

PrimeFaces.current().focus 方法适用于 inputTexts 但使用 commandButton 我看不到任何结果,替代方案我可以使用 executeScript 但我的想法是对这种要求使用焦点:

这个有效:

PrimeFaces.current().executeScript("document.getElementById('frmAperturaCajaMasiva:btnAceptarAperturaCajaMasiva').focus();");

这适用于 inputText 但不适用于按钮:

PrimeFaces.current().focus("frmAperturaCajaMasiva:btnAceptarAperturaCajaMasiva");

知道为什么吗?它是同一件事,但两个命令不同

这是 xhtml 上的按钮代码,没什么特别的:)

<p:commandButton id="btnAceptarAperturaCajaMasiva"
                    value="#{etiquetasMsg.cerrar_caja}" styleClass="cds-icon-button"
                    icon="cds-icon aprobar"
                    disabled="#{aperturaMasivaMB.blBtnProcesar}"
                    title="#{tooltipsMsg.cierrecaja_masiva_cerrar}"
                    onclick="if(!confirmarSeleccionTabla(PF('dtbFrmCajaWv'),null)){ return false; }"
                    actionListener="#{aperturaMasivaMB.validarCierreCajaMasivo}"
                    rendered="#{adminRestriccionMB.validarRestriccion('BTN_CERRAR_CAJAMASIVO')}" />

是的,我知道为什么。 PrimeFaces 中的焦点方法专门排除了旨在聚焦输入字段的按钮。这是源代码。

focus: function(id, context) {
    var selector = ':not(:submit):not(:button):input:visible:enabled[name]';

注意 Jquery 选择器中的 "not(:submit):not(:button)"。

源代码:https://github.com/primefaces/primefaces/blob/master/src/main/resources/META-INF/resources/primefaces/core/core.js#L416-L444