rich:hotKey for Form Submission?

时间:2011-01-04 21:38:47

标签: html forms jsf richfaces hotkeys

我有一个看起来像这样的登录表单,使用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()" />

但是,当我在表单内输入时,没有任何反应。知道我在这里做错了吗?

3 个答案:

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

您还可以使用更具体的选择器,以便当焦点位于其中一个表单域时,输入按下仅提交表单。无论哪种方式,这最终解决了我的问题。