Frage

Ich habe ein Suchformular mit einem Query Builder. Der Builder wird durch eine Taste aktiviert. So etwas wie diese

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

Das Ergebnis ist HTML, die sowohl eine <button/> und eine <input type="submit"/> in Form aufweist. Wenn der Benutzer eine Zeichenfolge in das Ausdrucksfeld betritt und trifft die Enter-Taste, anstatt den Absenden-Button klicken, wird der Query Builder angezeigt, wenn das erwartete Verhalten ist, dass die Suche eingereicht werden. Was soll das?

War es hilfreich?

Lösung

Eine Taste in einem HTML-Formular wird angenommen, verwendet werden, um das Formular abzuschicken. Ändern Taste input type = "button" und das sollte es beheben.

Alternativ type = "button" auf die Schaltfläche Element hinzufügen.

Andere Tipps

als erstes, gibt ein ID-Taste zu suchen. Dann auf Textbox, können Sie Client-Ereignis abfangen onkeydown , mit einem (Javascript) Funktion wie folgt aus:

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

I Höper ich Ihnen helfen.

, wenn es ein einziges Eingabefeld ist in der Form, geben viele Browser die Formulare automatisch, wenn die Enter-Taste getroffen wird.

Versuchen

  1. Fügen Sie ein weiteres Eingabefeld. Verstecken Sie es, indem sie es Styling so ist es nicht sichtbar. (Z.B. <input type="text" name="bogusField" style="display: none;" />
  2. Block eingeben das Schlüssel Formular Verhalten innerhalb eines JavaScript-Event-Handler (zB hier oder hier ). Noch besser ist, verwenden Sie einen GUI-Toolkit, das dabei helfen kann (zum Beispiel GWT)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top