Domanda

Ho un modulo di ricerca con un generatore di query. Il builder è attivato da un pulsante. Qualcosa del genere

<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>

Il risultato è HTML che ha sia <button/> che <input type="submit"/> nel modulo. Se l'utente immette una stringa nel campo dell'espressione e preme il tasto Invio anziché fare clic sul pulsante di invio, il generatore di query viene visualizzato quando il comportamento previsto è che la ricerca deve essere inviata. Cosa dà?

È stato utile?

Soluzione

Si presume che un pulsante in un modulo HTML sia utilizzato per inviare il modulo. Cambia il pulsante in input type = & Quot; button & Quot; e questo dovrebbe risolverlo.

In alternativa, aggiungi type = " pulsante " all'elemento pulsante.

Altri suggerimenti

come prima cosa, dai un ID al pulsante Cerca. Quindi, nella casella di testo, potresti intercettare l'evento client onkeydown , con una funzione (javascript) come questa:

  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();
        }
    }

Io aiuto, ti aiuto.

se nel modulo è presente un singolo campo di input , molti browser inviano i moduli automaticamente quando viene premuto il tasto Invio.

Prova

  1. Aggiungi un altro campo di input. Nascondilo disegnandolo in modo che non sia visibile. (ad es. <input type="text" name="bogusField" style="display: none;" />
  2. Blocca il comportamento di invio del modulo chiave di invio all'interno di un gestore eventi JavaScript (ad es. qui oppure qui ). Ancora meglio, usa un toolkit GUI che può aiutarti in questo (ad es. GWT)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top