如果我有素数部分,例如
<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();
查看更多: