Mat*_*ari 5 javascript primefaces jsf-2
如果我有一个primefaces组件,比如
<p:selectOneMenu id="myComponent">
...
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
在脚本标记内,您可以注意到窗口小部件的名称(如果我不在组件中提供它,它将被生成).我想知道如何获取widget var元素,或者如果这不可能,我怎么能得到那个""标记,这样我才能得到这个widget 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
此函数在body的onkeydown事件上执行.这样做的目的是通过tab键替换enter键的默认行为.唯一的问题是,当焦点组件是selectOneMenu并且用户点击进入时,它正确地表现得像tab键,但之前聚焦的selectOneMenu被打开(因为这是组件的默认行为).
所以,我想要做的是调用之前聚焦的组件的selectOneMenu小部件var的close()方法.
您可以widgetVar使用这个方便的函数通过id 获取对象:
功能
function getWidgetVarById(id) {
for (var propertyName in PrimeFaces.widgets) {
if (PrimeFaces.widgets[propertyName].id === id) {
return PrimeFaces.widgets[propertyName];
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法
getWidgetVarById('myFormName:myComponent');
Run Code Online (Sandbox Code Playgroud)
例
getWidgetVarById('dialogId').show();
Run Code Online (Sandbox Code Playgroud)
看更多:
| 归档时间: |
|
| 查看次数: |
14803 次 |
| 最近记录: |