我有一个看起来像这样的登录表单,使用RichFaces和Seam:
<h:form id="loginForm">
<h:outputLabel value="Username" />
<h:inputText value="#{identity.credentials.username}" />
<h:outputLabel value="Password" />
<h:inputText value="#{identity.credentials.password}" />
<h:commandLink action="#{identity.login()}" value="Login" />
</h:form>
我希望能够允许用户点击“输入”并自动提交表单进行登录。我尝试过使用Richfaces的<rich:hotKey />
功能,但我认为我做错了。我输入的代码如下:
<rich:hotKey key="return"
handler="#{rich:element('loginForm')}.submit()" />
但是,当我在表单内输入时,没有任何反应。知道我在这里做错了吗?
答案 0 :(得分:0)
我认为你需要使用selector属性。像,
<rich:hotKey key="return"
handler="#{rich:element('loginForm')}.submit()"
selector="#loginForm"/>
此外,您应该点击“提交”按钮,而不是提交表单。像,
<rich:hotKey key="return"
handler="#{rich:element('loginButton')}.click()"
selector="#loginForm"/>
答案 1 :(得分:0)
尝试以下代码。我希望你能有所了解......
<body>
<h:form id="loginForm">
<h:outputLabel value="Username : " />
<h:inputText id="userNameId" value="#{Login.username}" />
<h:outputLabel value="Password : " />
<h:inputText id="passwordId" value="#{Login.password}" />
<a4j:commandButton id="loginButton" action="#{Login.loginButton}" value="Login" focus="button"/>
<rich:hotKey key="return"
selector="#userNameId"
handler="#{rich:element('loginForm:loginButton')}.click();
event.stopPropagation();event.preventDefault();
return false;"/>
<rich:hotKey key="return"
selector="#passwordId"
handler="#{rich:element('loginForm:loginButton')}.click();
event.stopPropagation();event.preventDefault();
return false;"/>
</h:form>
</body>
答案 2 :(得分:0)
对于那些仍在努力解决这个问题的人,我终于得到了一些有用的东西。我的代码现在看起来像这样:
<h:form id="loginForm">
<h:outputLabel value="Username" />
<h:inputText value="#{identity.credentials.username}" />
<h:outputLabel value="Password" />
<h:inputText value="#{identity.credentials.password}" />
<h:commandLink action="#{identity.login()}" value="Login" />
<rich:hotKey key="return"
handler="#{rich:element('loginForm')}.submit()"
selector="#loginForm"/>
</h:form>
您还可以使用更具体的选择器,以便当焦点位于其中一个表单域时,输入按下仅提交表单。无论哪种方式,这最终解决了我的问题。