2012-09-12 36 views
0

在suggestioinField組件中添加ajax呈現器後,當前我面臨div組件的問題,div顯示更改爲none。如何使頁面即使在想要採取行動之後,仍留在同一頁面。在JSF中使用java腳本或Ajax呈現選項使div標記可見

這是我用來隱藏和顯示紅利

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

添加按鈕,顯示div標籤的JavaScript函數:

<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> 

有沒有辦法做到這一點?

回答

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將被調用,只有在它成功結束後纔會調用jsf.ajax.addOnEvent,並且只有在調用cmdAddConfirm按鈕時,纔會調用您的js函數將顯示設置爲阻止