Evento al hacer clic en el botón de disparo de envío del formulario Seam/JSF
Pregunta
Tengo un formulario de búsqueda con un generador de consultas.El constructor se activa mediante un botón.Algo como esto
<h:form id="search_form">
<h:outputLabel for="expression" value="Expression"/>
<h:inputText id="expression" required="true" value="#{searcher.expression}"/>
<button onclick="openBuilder(); return false;">Open Builder</button>
<h:commandButton value="Search" action="#{searcher.search}"/>
</h:form>
El resultado es HTML que tiene tanto un <button/>
y un <input type="submit"/>
en la forma.Si el usuario ingresa una cadena en el campo de expresión y presiona la tecla Intro en lugar de hacer clic en el botón enviar, el generador de consultas se muestra cuando el comportamiento esperado es que se envíe la búsqueda.¿Lo que da?
Solución
Se supone que se utiliza un botón en un formulario HTML para enviar el formulario.Cambie el botón a tipo de entrada = "botón" y eso debería solucionarlo.
Alternativamente, agregue type="button" al elemento del botón.
Otros consejos
Como primero, proporcione una ID al botón Buscar.Luego, en el cuadro de texto, podrías interceptar el evento del cliente. onkeydown, con una función (javascript) como esta:
function KeyDownHandler(event)
{
// process only the Enter key
if (event.keyCode == 13)
{
// cancel the default submit
event.returnValue=false;
event.cancel = true;
// submit the form by programmatically clicking the specified button
document.getElementById('searchButtonId').click();
}
}
Espero poder ayudarte.
si hay un solo campo de entrada Dentro del formulario, muchos navegadores envían los formularios automáticamente cuando se presiona la tecla Intro.
Intentar
- Agregue otro campo de entrada.Ocultarlo dándole estilo para que no sea visible.(p.ej.,
<input type="text" name="bogusField" style="display: none;" />
- Bloquear el comportamiento de envío del formulario con la tecla Intro dentro de un controlador de eventos de JavaScript (por ejemplo, aquí o aquí).Aún mejor, use un kit de herramientas GUI que pueda ayudar con esto (por ejemplo, GWT)