如何使 Enter Key Press 的行为类似于 JSF 中的提交。它适用于输入框;但不是 inputSecret 框
6 回答
我以前没见过这个问题。这种行为是特定于浏览器的可能性很小。尝试在不同类型的浏览器中排除其中一种(IE6/7/8、FF、Safari、Chrome 等)。这是由(糟糕的)Javascript 键事件侦听器错误地抑制输入键(例如检查输入字符的 JS 密码验证器)引起的可能性更大。
如果仍然无效,只需将以下内容添加onkeypress
到h:form
:
<h:form onkeypress="if (event.keyCode == 13) this.submit();">
但是,您需要考虑 textareas 。如果您有它们,那么您需要自己将所有onkeypress
事件复制到 textareas期望h:inputXXX
的元素上。
如果你想按 ENTER 键而不是以任何形式提交,我们在这里要做的就是在 af:form 标签中添加 defaultcommand 属性,并将提交按钮的 id 作为值。示例代码片段是
<af:form id="f1" defaultCommand="cb1">
<af:outputText value="User Name" id="usename"/>
<af:inputText value="#{BackingBean.userName}" id="uname" />
<af:outputText value="Password" id="pword"/>
<af:inputText value="#{BackingBean.password}" id="paword" secret="true"/>
<af:commandButton text="Submit" action="#{BackingBean.method}" id="cb1" />
</af:form>
有一个旧规范突然出现在我的脑海中。如果您有一个仅包含一个输入字段的表单,则在某些版本的 Internet Explorer 中,在 -key 上提交的行为enter不起作用。最简单的解决方法是确保您有多个输入字段。
此问题的其他原因包括...
- 没有提交类型的输入
- 具有提交类型的输入,但在页面上不可见(隐藏或定位在页面外)
此行为非常特定于此浏览器。
此处的 MS 错误报告:connect.microsoft.com:提交按钮值未随表单提交一起发布
用jsf 2测试。放:
<h:commandButton id="hidden" style="visibility: hidden;" action="#{mybean.myaction()}" />
以你的形式
我通过放置一个额外的 inputBox 并使用 javascript 隐藏它来使其工作。如果您有任何其他建议,请告诉我感谢 baluC 为我指明了正确的方向,杰瑞
从 ComputerPilot 的回答中,我知道这是 IE 中的错误,如果只有一个输入元素,它不会使父表单提交。为了克服这个问题,我又添加了一个带有属性的输入框,style="display:none"
它工作得很好。