繁体   English   中英

Primefaces selectOneMenu焦点不起作用

[英]Primefaces selectOneMenu focus not working

我在我的应用程序中使用PrimeFaces 5.1 ,我在dataTable使用了selectOneMenu ,当我按添加更多按钮时需要将selectOneMenu按钮聚焦。

样例代码

JavaScript的

function focusMenu(id)
{
var focusId="#{p:component('mainTable')}"+":"+id;
PrimeFaces.focus(final);
}

XHTML

<div style="padding-left:4px;height: 
expression(this.scrollHeight > 399? '400px' : 'auto');max-height:400px;overflow-x:auto;overflow-y:auto;">  
<p:dataTable id="mainTable" value=#{main.UserDataTable} .....>
<p:column headerText="Drop Down">
<p:selectOneMenu id="dropdDownId"...>
.....
</p:selectOneMenu>
</p:column>
<p:column headerText="Operation">
<p:commandButton value="Add More Row" action="{user.addMoreRowAction}"
update="mainTable"/>
</p:column>
</p:dataTable>
</div>

Java的

public String addMoreRowAction()
{
RequestContext.getCurrentInstance().execute("focusMenu('"+ rowIndex + ":dropdDownId"')");
return null;
}

在上面的代码中,按我的预期可以很好地聚焦最后添加的selectOneMenu ,但是基于聚焦最近添加的selectOneMenu组件,浏览器滚动条不会向下移动。

请帮我解决问题。

您可以使用scrollTop函数将滚动条移到焦点ID。 focusid传递给函数。

function setScrollPos(focusId){
    $('html,body').animate({
             scrollTop: $(focusId).offset().top-65
    }, 1000);
}

调用上面的函数

function focusMenu(id)
{
var focusId="#{p:component('mainTable')}"+":"+id;
PrimeFaces.focus(final);
setScrollPos(focusId); <<------
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM