如果我有一个 primefaces 组件,比如
<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>
在脚本标签内,您可以注意到小部件 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);
}
}
}
该函数在 body 的 onkeydown 事件上执行。这样做的目的是用 tab 键替换 enter 键的默认行为。唯一的问题是,当焦点组件是 selectOneMenu 并且用户按 Enter 键时,它的行为与 tab 键一样正确,但之前焦点的 selectOneMenu 被打开(因为这是组件的默认行为)。
所以,我想要做的是调用先前关注的组件的 selectOneMenu 小部件 var 的 close() 方法。