如果我有素数部分,例如

<p:selectOneMenu id="myComponent">
...
</p:selectOneMenu>

在html中,它将生成如下内容:
<div id="myFormName:myComponent" widgetVar="lollipop">
...A lot of things in here...
</div>
<script id="myFormName:myComponent_s">
   $(function(){PrimeFaces.cw('SelectOneMenu','lollipop',.......
</script>

在script标签内,您会注意到小部件的var名称(如果我未在组件中提供它,它将被生成)。
我想知道如何获取小部件var元素,或者如果不可能,如何获取该“”标记,以便获取此小部件var的名称。

------编辑------
我将尝试解释为什么我需要这个。
我有这个功能:
function simulaTabManoBrow(event){
    var focusedComponent=document.activeElement;
    if(event.keyCode==13){
        //Cancel th edefault enter event(submit the form)
        event.preventDefault();
        event.stopPropagation();
        event.returnValue = false;
        event.cancelBubble = true;
        if((focusedComponent.tagName.toLowerCase()=="input" && focusedComponent.type.toLowerCase()=="button") || focusedComponent.tagName.toLowerCase()=="button"){
            //If the focused component is a button, click the button.
            focusedComponent.click();
        }else{
            //Press the tab key programatically
            $.emulateTab();
            verifyOneMenu(campoFocado);
        }
    }
}

该函数在主体的onkeydown事件上执行。
这样做的目的是用Tab键代替Enter键的默认行为。
唯一的问题是,当焦点所在的组件是selectOneMenu且用户按下Enter键时,它的行为就像Tab键一样,但是先前焦点所在的selectOneMenu已打开(因为这是组件的默认行为)。

因此,我想做的是调用该先前关注的组件的selectOneMenu小部件var的close()方法。

最佳答案

您可以使用以下便捷功能通过id获取widgetVar对象:

函数

function getWidgetVarById(id) {
   for (var propertyName in PrimeFaces.widgets) {
     if (PrimeFaces.widgets[propertyName].id === id) {
       return PrimeFaces.widgets[propertyName];
     }
   }
}

用法
getWidgetVarById('myFormName:myComponent');

示例
getWidgetVarById('dialogId').show();

查看更多:
  • Get widgetVar by Id
  • Intro To PrimeFaces widgetVar
  • 07-28 05:38