使用JSF中的java-script或Ajax render选项使div标签可见

时间:2012-09-12 08:08:03

标签: javascript html jsf-2

目前我在div组件中遇到问题,在suggestioinField组件中添加ajax渲染后div显示更改为none。如何使页面保持在同一页面中,甚至在渲染到动作之后。

这是我用来隐藏和显示divident

的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 Page-Div Content

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

有没有办法做到这一点?

1 个答案:

答案 0 :(得分: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将被调用,只有在成功结束后才会调用它,并且只有在从cmdAddConfirm按钮调用时,才会调用js函数来设置显示阻止