2015-09-17 3 views
0

Одна страница содержит панель вкладок с богатым лицом и имеет 4 вкладки. На одной из вкладок у меня есть текстовое поле и кнопка сохранения. Без сохранения данных. Если я перехожу на другую вкладку, она должна показывать всплывающее сообщение с несохраненными данными и предотвращать навигацию.Показать богатый: popupPanel на клике богатых: вкладка

Я попытался вызвать всплывающее окно, используя различные скрипты java, загружающие атрибуты rich: tabPanel, но не служащие цели.

Вот код

<rich:tabPanel onclick="#{rich:component('confirmation')}.show();return false" switchType="ajax" id="wizardTab" itemChangeListener="#{bean.tabChange}" activeItem="#{bean.activeTab}"> 
    <rich:tab id="tab1" 
       // tab1 

    </rich:tab> 
    <rich:tab id="tab2" 


    </rich:tab> 
    <rich:tab id="tab3" 


    </rich:tab> 

    <rich:tab id="tab4" 
         <h:inputText id="test" 
            styleClass="span2" maxlength="25" 
            value="#{bean.rowForChange.code}"> 
            <f:ajax event="blur" execute="@this"/> 
         </h:inputText> 
         <h:commandButton value="Update" styleClass="button" 
                style="width:160px" 
                action="#{bean.updtae}"> 
             <a4j:ajax execute="paramValue" 
                render="table simeditPnl" /> 
         </h:commandButton> 

    </rich:tab> 

</rich:tabPanel> 

    <rich:popupPanel render="#{jCRDataRefreshManagement.updateStatus}" id="confirmation" modal="false" autosized="true" resizeable="false"> 
      <f:facet name="header">Confirmation</f:facet> 
     <h:panelGrid> 
      <h:panelGrid columns="2"> 
      <h:graphicImage value="/alert.png" /> 
     <h:outputText value="You have unsaved changes. Are you sure?" style="FONT-SIZE: large;" /> 
      </h:panelGrid> 
      <h:panelGroup> 
      <input type="button" value="OK" 
      onclick="#{rich:component('confirmation')}.hide();submit();return false" /> 
     <input type="button" value="Cancel" 
      onclick="#{rich:component('confirmation')}.hide();return false" /> 
      </h:panelGroup> 
     </h:panelGrid> 
    </rich:popupPanel> 

Если все несохраненные данные о текстовом поле на вкладке 4 и попытались нажать на любой другой вкладке она должна оставаться на вкладке 4 и показать poupup подтверждения, как указано выше.

С этой реализацией мое всплывающее окно открывается всякий раз, когда я нажимаю вкладку.

Пожалуйста, укажите ошибку, которую я делаю, или дайте предложение для вышеупомянутого сценария. Любая помощь, связанная с использованием

+0

Пожалуйста, добавьте код, который вы используете. –

+0

добавлен фрагмент кода – Firu

ответ

0

Вместо этого нажмите onbeforeitemchange и верните false, если вы не хотите, чтобы вкладки переключались.

Если вы хотите, чтобы задержать использования коммутации что-то вроде этого:

saveTabs = function(event) { 
    oldItem = event.rf.data.oldItem, 
    newItem = event.rf.data.newItem; 
} 

<rich:tabPanel id="tabPanel" onbeforeitemchange="saveTabs(event); return false;" > 

И когда вы решили переключить использование:

RichFaces.component("form:tabPanel").__itemsSwitcher().exec(oldItem, newItem); 
Смежные вопросы