使任务流内联弹出窗口关闭“esc”按钮

时间:2013-09-06 06:52:17

标签: javascript popup oracle-adf adf-task-flow

我正在使用JDeveloper 11.1.2.3.0 我创建了一个任务流程(使用jsf页面而不是jsff),我在按钮点击时调用它。我选择将其显示为Inline Popup,一切正常。只是它不像真正的af:弹出窗口。 当我按下“esc”按钮时,弹出窗口不会关闭。有谁知道如何做到这一点? 谢谢

ps:我理解af:弹出并显示一个任务流,因为内联弹出窗口是不同的,但我想让我的弹出窗口至少退出“esc”。或者,如果有可能实现真正的af:弹出窗口提供它会很棒:)

2 个答案:

答案 0 :(得分:2)

我相信你可以做这样的事情

<af:document title="Press ESC to Cancel" id="d1">
 <af:commandButton text="Cancel Button" clientComponent="true" id="cb1" actionListener="#{someScope.someFunction}" action="actionToCallReturn" />
 <af:clientListener method="onKeyPress" type="keyPress"/>
 <af:resource type="javascript">
   function onKeyPress(evt){
     var _keyCode = evt.getKeyCode();
     if (_keyCode == AdfKeyStroke.ESC_KEY ){    
          var button = AdfPage.PAGE.findComponentByAbsoluteId('cb1');
          AdfActionEvent.queue(button,true);
          evt.cancel();
     }
 }
</af:resource>
</af:document>

答案 1 :(得分:0)

我感谢@Gawish的回复,因为它帮助我找到了解决方案。我无法使用该解决方案,因为ADF 11g中的clientListener中没有类型:“keyPress”。但是我确实喜欢这个并且效果非常好:

window.onkeyup = function (e) {
          if (e.keyCode == 27) {
              var button = AdfPage.PAGE.findComponentByAbsoluteId('cb1');
              AdfActionEvent.queue(button, true);
              e.cancel();
          }
      }

注意,e.cancel()最后是强制性的!