2016-05-24 6 views
1

私はap:accordionPanelを持っています。パネルの各タブには、ユーザーが操作できる情報があります。ユーザーがタブを閉じると、確認ダイアログが表示されますタブが閉じられる前に)あなたの変更が失われるならば、あなたは本当にあなたはタブを閉じたいのですか?ここで私はキャンセルtab in p:accordionPanel

<p:ajax event="tabClose" onstart="return myFunction()" 
listener" {myBean.myMethod}" process="@this" /> 

function myFunction() { 
    var answer = confirm("are you sure you wanna close the tab? if you do your changes will be lost"); 
    if(answer){ 
     //some logic 
     return true; 
    }else{ 
     //some logic 
     return false; 
    } 
} 

を試してみました何の問題は、私は確認ダイアログでキャンセルを選択した場合、タブがとにかく近づくということです。 onStart="return false"でタブ終了をキャンセルしないでください。私がやろうとしていることを達成する方法はありますか?

答えて

1

は最後に、私は明らかにonStart="return false"はそのstatatusの変化から、タブが、p:accordionPanelonTabChange属性を防ぐことはできません、私の問題を解決しない、唯一の問題は、何らかの理由でアコーディオンのonTabchangeイベントは実行されませんということですタブは、タブが開かれているときだけで閉じられているときので、私は唯一のaccordiongのonTabChangeイベントに置かmyFunction();に持っていたonTabChangeイベント、その後

PrimeFaces.widget.AccordionPanel.prototype.unselect = (function(index) { 
    var cached_function = PrimeFaces.widget.AccordionPanel.prototype.unselect; 

    return function() { 
    var panel = this.panels.eq(index); 

    if(this.cfg.onTabChange) { 
     var result = this.cfg.onTabChange.call(this, panel); 
     if(result === false) 
      return false; 
    } 

    var result = cached_function.apply(this, arguments); 

    return result; 
    }; 
})(); 

を呼び出すためにprimefacesのacordionPanel非選択機能を無効にする必要がありますパネル(onTabChange="return myFunction()")で動作します。