![](/img/trans.png)
[英]"onchange" not working for selectOneMenu in PrimeFaces 3.2
[英]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.