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<input type="submit"/>的 HTML。如果用户在表达式字段中输入字符串并按下回车键而不是单击提交按钮,则在预期行为是提交搜索时显示查询构建器。是什么赋予了?

4

3 回答 3

2

假定 HTML 表单中的按钮用于提交表单。将按钮更改为输入 type="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

如果表单中有一个输入字段,许多浏览器会在按下回车键时自动提交表单。

尝试

  1. 添加另一个输入字段。通过设置样式将其隐藏,使其不可见。(例如,<input type="text" name="bogusField" style="display: none;" />
  2. 在 JavaScript 事件处理程序(例如,此处此处)中阻止输入键表单提交行为。更好的是,使用可能对此有所帮助的 GUI 工具包(例如,GWT)
于 2008-09-23T01:09:35.167 回答