2014-01-31 9 views
0

Я переношу приложение с ледяных поверхностей 1.8 на поверхности льда 3.2. Это сложное приложение, и у меня возникают проблемы с страницы входа в JSF 2.Введите onkeyup, не работающий в jsf2

на странице у нас было что-то вроде:

<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 withou проблем. Но в JSF 2.1 + 3.2 ICEfaces Я изменил код так:

<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}');"> 
    . 
    . 
    . 

Этот код не будет работать таким образом. Если я нажимаю кнопку ввода, форма просто сбрасывается, и метод bean.auth даже не вызывается.

Что мне здесь не хватает. Разве JS ведет себя по-разному в jsf2 ?.

EDIT: Я нашел решение в этой теме: Submit action by the enter key Последнего сообщения имеет обходной путь.

ответ

0

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

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

У меня нет кнопки отправки в форме. Аутентификация выполняется через метод actionLogLogin LoginBean.auth (ActionEvent e). – panietoar