rich: hotKey для отправки формы? - PullRequest
0 голосов
/ 05 января 2011

У меня есть форма входа, которая выглядит примерно так, используя 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()" />

Однако, когда я нажимаю Enter внутри формы, ничего не происходит. Есть идеи, что я здесь не так делаю?

Ответы [ 3 ]

0 голосов
/ 04 июля 2011

Попробуйте следующий код.Я надеюсь, что вы можете получить представление ...

 <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>
0 голосов
/ 11 октября 2011

Для всех тех, кто все еще борется с этой проблемой, я наконец-то получил кое-что, что работает.Мой код теперь выглядит следующим образом:

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

Вы также можете использовать более конкретный селектор, чтобы при вводе нажмите форму только тогда, когда фокус находится на одном из полей формы.В любом случае, это, наконец, решило мою проблему.

0 голосов
/ 06 января 2011

Я думаю, вам нужно использовать свойство селектора. Что-то вроде

<rich:hotKey key="return"
             handler="#{rich:element('loginForm')}.submit()" 
             selector="#loginForm"/>

Кроме того, вместо отправки формы, вы должны нажать кнопку отправки. Что-то вроде

<rich:hotKey key="return"
             handler="#{rich:element('loginButton')}.click()" 
             selector="#loginForm"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...