2015-05-11 87 views
0

我有一個彈出窗口中,我有selectonechoice下拉。 單擊下拉菜單並按下退出鍵時,整個彈出窗口在ADF中關閉。 我的要求是防止在按下esc鍵時關閉彈出菜單,如果selectonechoice被選中。需要防止彈出關閉按esc鍵

我一直在嘗試使用下面的代碼以關閉彈出正常這是不工作

window.onkeydown = function(event){ 
    if(event.keyCode == 27){ 
     event.cancel(); 
    } 
} 

我自己也嘗試了選項覆蓋clientlisteners popupClosed和popupCanceled這並沒有幫助。

有關如何解釋esc鍵功能以及防止ADF彈出窗口關閉的任何幫助。

+0

你嘗試過'event.preventDefault();'嗎? – QueryLars

回答

0

每個ADF Faces組件類都有一個javascript等效項。對於彈出式RichPopup類,在JavaScript中反映爲ADFRichPopup。

您可以通過supressing以JavaScript對象ADFRichPopup取消的方法實現這一目標:

<af:resource type="javascript"> 
    function onPopupOpened(event) { 
       var popup = event.getSource(); 
       popup.cancel = function() {}; 
    } 
</af:resource> 



<af:popup> 
<af:clientListener method="onPopupOpened" type="popupOpened"/> 
</af:popup> 

當然,這意味着你將無法使用cancel()方法自己,但是你可以使用隱藏()方法。

+0

因爲如果焦點位於彈出窗口的任何子元素上,event.getSource()不會給我ADFRichPopup。我已經使用了'var popup = AdfPage.PAGE.findComponent(「popupId」); stdPopup.cancel = function(){};'。但它並沒有阻止按Esc鍵關閉彈出窗口。 – Raghu

+0

如果將客戶端偵聽器放置在彈出式標記中,event.getSource()將爲您提供彈出式實例100%。如果不是,那就意味着你的代碼有問題。這個解決方案使用Oracle支持進行檢查,確實有效。 –