p:selectOneMenu保持专注

时间:2017-10-26 13:57:14

标签: jsf primefaces

使用p:selectOneMenu时,Primefaces v6.1中似乎存在一个错误,它在显示模式对话框时保持焦点。您可以使用向上/向下箭头键更改selectOneMenu选项。当我用h:selectOneMenu替换p:selectOneMenu时,它按预期工作。知道如何将焦点移动到input1字段吗?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html
  xmlns="http://www.w3.org/1999/xhtml"   
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:p="http://primefaces.org/ui"  
  xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>      
</h:head>
<h:body>
  <h:form id="form">
     <!-- PF('statusWidget').blur();document.activeElement.blur(); -->
     <p:selectOneMenu id="status" widgetVar="statusWidget"
                   onchange="PF('dlg').show();" value="test1">
       <f:selectItem itemValue="test1" itemLabel="TEST_1"/>
       <f:selectItem itemValue="test2" itemLabel="TEST_2"/>
       <f:selectItem itemValue="test3" itemLabel="TEST_3"/>
     </p:selectOneMenu>
     <!-- onShow="document.activeElement.blur();" -->      
     <p:dialog widgetVar="dlg" modal="true" focus="input1">
       <p:inputText id="input1" widgetVar="test"/>
     </p:dialog>
   </h:form>
  </h:body>
</html>

1 个答案:

答案 0 :(得分:0)

我通过添加对focus()的延迟调用来修复此问题。

onchange="PF('dlg').show();setTimeout(function() { $('#form:input1').focus()  },10)"