当前位置: 首页 > 知识库问答 >
问题:

Primeface selectOneMenu焦点不工作

乐钱青
2023-03-14

我在我的应用程序中使用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组件的基础上向下移动。

请帮我解决这个问题。

共有1个答案

国阳
2023-03-14

您可以使用scrollTop函数将滚动条带到焦点ID。将Focus usid传递到函数中。

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); <<------
}
 类似资料:
  • 我尝试在我的项目中使用伪类。我想改变我点击它的元素的颜色。现在,当我点击我的元素时,只在它处于活动状态的地方改变颜色,鼠标上移后,它就会返回到原来的颜色。第二次点击后,我想让它回到原来的颜色。我用的是铬。 此处演示 null null

  • 我有一个和一个。点击按钮,我想打开键盘,同时请求关注,以便用户直接开始在键盘上键入文本,并出现在中。但是在我的例子中,当我点击按钮时,它会打开键盘,但它不会将焦点设置在上,因为用户必须再次单击才能在上面写入。问题是什么。任何帮助或建议。 单击按钮时的代码

  • 在我的应用程序中,我有一个使用加速器的屏幕。我使用功能键F3在我的应用程序中执行一个操作。它每次都工作得很好,但是当我在这个屏幕上单击任何文本字段时,功能键都不执行。 当我单击textfield然后按F3功能键时,它不起作用。有人知道解决办法?

  • 问题内容: 我有以下功能 但是 在ie7中不起作用,那我该怎么办!我想将光标放在输入中! 谢谢 更新 很好的解决方案,谢谢,但是现在在opera中不起作用:( 问题答案: 对于IE,您需要使用settimeout函数,因为它很懒,例如: 对于opera,这可能会有所帮助:如何在opera文本框上的所需索引中设置焦点

  • 我有一个音乐播放器活动来控制歌曲的播放。我已经阅读了有关管理音频焦点的文档,并在

  • 定义 焦点图组件。 图片展示 代码演示 import Focus from 'pile/dist/components/focus' <Focus className="focus-demo" index = {0} width = {"375px"} loop = {true} timer = {5000} direction = "left" duration = {