PrimeFaces.current()。focus不适用于commandButton

时间:2019-07-18 22:58:21

标签: jsf primefaces

PrimeFaces.current()。focus方法与inputTexts一起使用,但与commandButton一起使用时,我看不到任何结果,可替代地,我可以使用executeScript,但想法是将焦点用于这种重新查询:

这有效:

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

这适用于inputTexts,但不适用于按钮:

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')}" />

1 个答案:

答案 0 :(得分:2)

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

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