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?

¿Fue útil?

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

  1. Agregue otro campo de entrada.Ocultarlo dándole estilo para que no sea visible.(p.ej., <input type="text" name="bogusField" style="display: none;" />
  2. 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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top