代码之家  ›  专栏  ›  技术社区  ›  sblundy

Seam/JSF表单提交触发按钮onclick事件

  •  3
  • sblundy  · 技术社区  · 18 年前

    我有一个带有查询生成器的搜索表单。生成器由一个按钮激活。像这样的

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

    <button/> <input type="submit"/> 在形式上。如果用户在表达式字段中输入字符串并按enter键而不是单击submit按钮,则当预期行为是提交搜索时,将显示查询生成器。有什么好处?

    3 回复  |  直到 18 年前
        1
  •  2
  •   noah    18 年前

    假定HTML表单中的按钮用于提交表单。将button更改为input type=“button”,这样应该可以修复它。

    或者,将type=“button”添加到按钮元素。

        2
  •  1
  •   stefano m    18 年前

    首先,给搜索按钮一个ID。 然后,在textbox上,您可以截获客户端事件 ,具有如下(javascript)函数:

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

        3
  •  0
  •   user13229    18 年前

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

    尝试

    1. <input type="text" name="bogusField" style="display: none;" />
    2. 阻止JavaScript事件处理程序中的enter键表单提交行为(例如。, here here