缝/ JSF表单提交的触发按钮onclick事件(Seam/JSF form submit firi

2019-09-20 10:37发布

我有一个查询生成器搜索表单。 建设者通过按钮激活。 像这样的事情

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

其结果是HTML既具有<button/><input type="submit"/>形式。 如果用户输入一个字符串到表达领域,并按下ENTER键,而不是点击提交按钮,当预期的行为是搜索提交显示查询生成器。 是什么赋予了?

Answer 1:

在HTML形式的按钮被假定为被用于提交表单。 更改按钮输入类型=“按钮”,并且应该修复它。

备选地,添加类型=“按钮”按钮元件。



Answer 2:

作为第一,举一个ID搜索按钮。 然后,在文本框,你可以拦截客户端事件的onkeydown,有这样的(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();
        }
    }

我料斗中我帮你。



Answer 3:

如果在表单中的单个输入字段 ,许多浏览器自动提交表单的时候了输入键击。

尝试

  1. 添加另一个输入字段。 通过其样式,隐藏它,所以它是不可见的。 (例如, <input type="text" name="bogusField" style="display: none;" />
  2. 块中的回车键形式JavaScript事件处理程序中提交行为(例如, 在这里或在这里 )。 更妙的是,使用GUI工具包,可能与此(例如,GWT)帮助


文章来源: Seam/JSF form submit firing button onclick event