Question

J'ai un formulaire de recherche avec un constructeur de requêtes. Le constructeur est activé par un bouton. Quelque chose comme ça

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

Le résultat est HTML qui comporte à la fois un <button/> et un <input type="submit"/> dans le formulaire. Si l'utilisateur entre une chaîne dans le champ d'expression et appuie sur la touche Entrée au lieu de cliquer sur le bouton d'envoi, le générateur de requêtes s'affiche lorsque le comportement attendu est que la recherche soit soumise. Qu'est-ce qui donne?

Était-ce utile?

La solution

Un bouton dans un formulaire HTML est supposé être utilisé pour soumettre le formulaire. Changer le bouton pour saisir le type = & Bouton & Quot; et cela devrait résoudre le problème.

Vous pouvez également ajouter un bouton type = " " à l'élément button.

Autres conseils

en premier lieu, attribuez un identifiant au bouton de recherche. Ensuite, dans la zone de texte, vous pouvez intercepter l'événement client onkeydown , avec une fonction (javascript) semblable à celle-ci:

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

J'espère que je vous aide.

s'il existe un seul champ de saisie dans le formulaire, de nombreux navigateurs le soumettent automatiquement lorsque la touche Entrée est enfoncée.

Essayez

  1. Ajouter un autre champ de saisie. Cachez-le en le coiffant pour qu'il ne soit pas visible. (par exemple, <input type="text" name="bogusField" style="display: none;" />
  2. Bloquez le comportement de soumission du formulaire d'entrée de clé dans un gestionnaire d'événements JavaScript (par exemple, ici ou ici ). Mieux encore, utilisez une boîte à outils d'interface graphique pouvant vous aider (GWT, par exemple)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top