3

クエリビルダーを備えた検索フォームがあります。ビルダーはボタンで起動します。このようなもの

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

結果は、フォームにa<button/>と an の両方を含む HTML になります。<input type="submit"/>ユーザーが式フィールドに文字列を入力し、送信ボタンをクリックするのではなく、Enter キーを押した場合、予想される動作が検索の送信であるときに、クエリ ビルダーが表示されます。何を与える?

4

3 に答える 3

2

HTMLフォームのボタンは、フォームの送信に使用されると想定されています。ボタンをinputtype= "button"に変更すると、修正されます。

または、ボタン要素にtype="button"を追加します。

于 2008-09-22T20:06:00.407 に答える
1

まずは検索ボタンにIDを付与します。次に、テキストボックスで、次のような(javascript)関数を使用して、クライアントイベントonkeydownをインターセプトできます。

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

お役に立てれば幸いです。

于 2008-09-22T20:19:30.483 に答える
0

フォーム内に 単一の入力フィールドがある場合、多くのブラウザーは、Enter キーが押されるとフォームを自動的に送信します。

試す

  1. 別の入力フィールドを追加します。表示されないようにスタイリングして非表示にします。(例えば、<input type="text" name="bogusField" style="display: none;" />
  2. JavaScript イベント ハンドラー (例: hereまたはhere )内でキー入力フォームの送信動作をブロックします。さらに良いことに、これに役立つGUIツールキット(GWTなど)を使用してください。
于 2008-09-23T01:09:35.167 に答える