Seam / JSF表单提交触发按钮onclick事件
时间:2020-03-06 14:33:41 来源:igfitidea点击:
我有一个带有查询生成器的搜索表单。通过按钮激活构建器。像这样
<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" />
的HTML。如果用户在表达式字段中输入字符串,然后按Enter键而不是单击"提交"按钮,则当预期行为是提交搜索时,将显示查询构建器。是什么赋予了?
解决方案
假定使用HTML表单中的按钮来提交表单。将button更改为输入type =" button",这应该可以解决。
或者,将type =" button"添加到button元素。
首先,给"搜索"按钮指定一个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(); } }
我希望我能帮助你。
如果表单中只有一个输入字段,则许多浏览器在按下Enter键时会自动提交表单。
尝试
- 添加另一个输入字段。通过样式隐藏它,使其不可见。 (例如,<< input type =" text" name =" bogusField" style =" display:none;" />`
- 阻止JavaScript事件处理程序(例如,此处或者此处)中的Enter键表单提交行为。更好的是,使用可能对此有所帮助的GUI工具箱(例如GWT)