6

次のような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);
        }
    }
}

この関数は、本体の onkeydown イベントで実行されます。これの目的は、Enter キーのデフォルトの動作を Tab キーに置き換えることです。これの唯一の問題は、フォーカスされたコンポーネントが selectOneMenu であり、ユーザーが Enter キーを押すと、タブ キーのように正しく動作しますが、以前にフォーカスされていた selectOneMenu が開かれることです (これがコンポーネントのデフォルトの動作であるため)。

だから、私がやろうとしているのは、以前にフォーカスされたコンポーネントの selectOneMenu ウィジェット変数の close() メソッドを呼び出すことです。

4

4 に答える 4

1

ウィジェット var を生成するアルゴリズムは非常に簡単です。

  1. 要素のIDを取る
  2. コロン:を下線に変換する_
  3. widget_開始時に追加

たとえば、要素の ID が のmain:personal:age場合、ウィジェットは になりますwidget_main_personal_age

コンポーネントの JSF id は、対応する html タグの id 属性と同じです。

于 2013-07-02T07:03:33.377 に答える