0

現在、suggestioinField コンポーネントに ajax render を追加した後、div コンポーネントで問題に直面しています。div 表示が none に変更されます。アクションへのレンダリング後も同じページに留まるようにする方法。

これは、除算を非表示および表示するために使用した JavaScript 関数です。

function AddShow(id){
  document.getElementById(id).style.display="block";}

div タグを表示するボタンを追加します。

<h:commandButton type="button" id="cmdadd1" value="#{message.btn__list_add}" onclick="AddShow('Add')" immediate="true"/>

JSF ページ Div コンテンツ

<div id="Add" display:none;"> 
  <h:outputLabel value="#{message.label_listA }" />                 
  <o:suggestionField id="addvalA"  value="#{MainAction.CodeAdd}" customValueAllowed="false"
   manualListOpeningAllowed="true"  autoComplete="true" suggestionMinChars="1   onchange="O$.ajax.request(this,event,{ execute: 'frmList: addvalA ', listener: ‘MainAction.doSelectCodeAdd', render: 'frmList' })"onkeydown="O$.ajax.request(this,event,{listener: 'MainAction.doResetA'})" onblur="O$.ajax.request(this,event,{render:'frmList'})" ><o:dropDownItems value="#{MainAction.doCodeAdd}"/> </o:suggestionField>                            

   <h:commandButton  id="cmdAddConfirm"  value="#{message.btn_create}"  >
       <f:ajax execute="@form" render="@form" listener="#{MainAction.doConfirmAdd}"/>                           
  </h:commandButton>


  </div> 

これを行う方法はありますか?

4

1 に答える 1

2

以下をjsファイルに追加します。jQuery(primefacesから)を取得したと仮定しますが、とにかくjsf.ajax.addOnEvent(function (data)...重要な部分です...

jQuery(window).load(function () {
    jsf.ajax.addOnEvent(function (data) {
        if (data.status === "success") {
            if(data.source.id  === "cmdAddConfirm"){
                AddShow('Add');
            }
        }
    });
});

簡単な説明:

各 ajax 呼び出しでjsf.ajax.addOnEventが呼び出され、その内部で正常に終了した後にのみ、呼び出しがcmdAddConfirmbutton から行われた場合にのみ、js 関数を呼び出して表示をブロックに設定します

于 2012-09-12T08:32:29.973 に答える