输入onkeyup在jsf2中不起作用

时间:2014-01-31 13:49:45

标签: javascript jsf-2 login icefaces onkeyup

我正在将应用程序从icefaces 1.8迁移到icefaces 3.2。这是一个复杂的应用程序,我在JSF 2中遇到登录页面的问题。

在页面中我们有类似的内容:

<script type="text/javascript">

function onEnter(ev)
     {  if(ev==13)
        { 
            document.getElementById('login:linkLogin').onclick();
        } 
     }
</script>
. 
.
.
<body onkeyup="onEnter(event.keyCode);">
.
.
.
<ice:commandLink id="linkLogin" action="#{loginBean.auth}" onclick=";encriptPass('#{login.rsaKeyMod}','#{login.rsaPubKey}');">
.
.
.

这适用于jsf 1.2 + icefaces 1.8没问题。 但是在jsf 2.1 + icefaces 3.2中我用这种方式修改了代码:

<script type="text/javascript">

    function onEnter(ev)
         {  if(ev==13)
            { 
                document.getElementById('login:linkLogin').onclick();
            } 
         }
    </script>
    . 
    .
    .
 <h:body onkeyup="onEnter(event.keyCode);">
    .
    .
    .
    <ice:commandLink id="linkLogin" action="#{loginBean.auth}" onclick=";encriptPass('#{login.rsaKeyMod}','#{login.rsaPubKey}');">
    .
    .
    .

此代码不会以这种方式工作。如果按Enter键,表单只会重置,并且甚至不会调用bean.auth方法。

我在这里缺少什么。 JS在jsf2中的行为有何不同?

修改 我在这个帖子中找到了一个解决方案: Submit action by the enter key 最后一篇文章有​​解决方法。

1 个答案:

答案 0 :(得分:0)

如果您在表单处于焦点时按Enter键,它将提交表单(如果您有提交按钮)并转到您在表单操作属性中定义的URL。您需要通过监听表单的submit事件并运行preventDefault函数来阻止此默认行为。

$('#someform').submit(function(e) {
  e.preventDefault();
});