关于JSF 2中的accesskey

时间:2013-10-25 14:30:42

标签: javascript jsf primefaces

我有下一个代码:

<h:form name="frm">
<h:panelGroup>          
<p:commandButton value="Good" id='good' action="#{job.SetGood}" accesskey="g"/>
<p:commandButton value="Bad" id='bad' action="#{job.SetBad}" accesskey="b"/>
</h:panelGroup>

我需要用户可以只使用键空间“按下”id ='good'的按钮,使用键“退格”使用id ='bad'的按钮我尝试很多东西但不是工作...例如我尝试在负载上调用函数cargar()并且无法工作......有人可以帮助我吗?

function cargar()
{
document.getElementById("good").focus();
document.onkeypress=function(e)
{
var esIE=(document.all);
var esNS=(document.layers);
tecla=(esIE) ? event.keyCode : e.which;
if(tecla==32)
{
frm.submit();
 <!--Also I try: document.getElementById("good").click();-->
}
};
}

2 个答案:

答案 0 :(得分:0)

尝试设置属性prependId:

<h:form name="frm" prependId="false">

这将呈现像

这样的按钮
<button id="good" name="good" ...

如果您使用默认值(prependId =“true”),则按钮将呈现为

<button id="j_idt14:good" name="good" ...

在这种情况下,j_idt14是父表单组件的id。

javascript函数可能无法在代码document.getElementById("good")

中找到元素

答案 1 :(得分:0)

你可以做到这一点。

<h:form name="frm">
   <p:remoteCommand name="executeAction" listener="#{job.SetGood}" update="frm" />
  <h:panelGroup>          
     <p:commandButton value="Good" id='good' 
          accesskey="g" onfocus="executeAction();" />
     <p:commandButton value="Bad" id='bad' action="#{job.SetBad}" accesskey="b"/>
  </h:panelGroup>
</h:form>

<p:remoteCommand将在<p:commandButton获得焦点时执行。