Tengo una tabla de datos con los campos de búsqueda. Quiero que se invoque un método en el bean de respaldo cuando se presiona la tecla ENTER, así como también la DataTable que se debe volver a generar.JSF invoque el método de bean de respaldo y vuelva a generar componentes en la tecla ENTRAR
Mi enfoque hasta ahora solo funciona en IE 6 y 7, no en FF. Esta es la inputText:
<h:inputText
value="#{applicantProductListBean.applicantNameFilterValue}"
id="applicantNameFilterValue" onkeypress="submitByEnter(event)">
</h:inputText>
y este es el método de Javascript invoco:
function submitByEnter(e){
if(e.keyCode==13){
// alert("Enter was pressed");
e.returnValue=false;
e.cancel=true;
document.getElementById("applicantProductListForm:refreshButton").click();
}
}
Como se puede ver, el método de Javascript hace clic en el botón Actualizar, que existe en la página:
<a4j:commandButton value="Refresh" id="refreshButton"
action="#{applicantProductListBean.refreshData}"
image="/images/icons/refresh48x48.gif"
reRender="table, scroller">
</a4j:commandButton>
El método refreshData no devuelve nada. Como dije antes, esto solo funciona en IE 6 e IE 7.
¿Alguien sabe por qué no funciona en FF?
Una alternativa que estaba considerando era HotKey, que de hecho puede detectar el evento de ENTER, pero solo puede invocar Javascript, por lo que no es apropiado.
¿Es la forma correcta de hacerlo a través de RichFaces o JSF sin formato?
¡Salud!
ACTUALIZACIÓN:
modificado ligeramente la respuesta por BalusC, el guión que funciona es:
if (event.preventDefault) {
// Firefox
event.preventDefault();
} else {
// IE
event.returnValue = false;
}
El primero funcionó. ¡Gracias hombre! –
De nada. Sin embargo, no funcionará en navegadores (muy) antiguos. Pruébelo en todos los navegadores que se supone que debe admitir. – BalusC
Hice una actualización (verifico si preventDefault existe y lo llamo o establezco returnValue en falso). Lo probé en IE6, IE7, FF. –