0

我有一个 InputText,我希望能够在选择 InputText 并按下例如键:F9 时打开一个页面。

到目前为止,我有一个 javascript 可以监听 keyPress 并且可以正常工作。而且我也可以显示一个弹出窗口,但现在我想在按下键时转移到另一个页面:

接下来我有代码:

function handleKeyEvent(evt) {
    var _keyCode = evt.getKeyCode();
    if (_keyCode == AdfKeyStroke.F9_KEY){
        //Do Something ...
          showPopup(evt)
      evt.cancel();
    }
}


function showPopup(event) 
{
    event.cancel();
    var source = event.getSource();
    var popupId = "p1";
    var popup = AdfPage.PAGE.findComponentByAbsoluteId(popupId);


if (!popup.isPopupVisible())
{   
  var hints = {};
  hints[AdfRichPopup.HINT_LAUNCH_ID] = source.getClientId();
  hints[AdfRichPopup.HINT_ALIGN_ID] = source.getClientId(); 
  hints[AdfRichPopup.HINT_ALIGN] = AdfRichPopup.ALIGN_AFTER_START;

  popup.show(hints);
}
}

如何才能做到这一点?

谢谢最好的问候

4

2 回答 2

0

您可以像这样更改 handleEventKey 函数中的 location.href

function handleKeyEvent(evt) {
evt.cancel();
var _keyCode = evt.getKeyCode();
if (_keyCode == AdfKeyStroke.F9_KEY){
    //Change the page
   document.location.href = newUrl;
 }
}
于 2013-10-24T12:28:08.177 回答
0

问题是你想如何导航到这个页面,你周围的环境是什么?

如果您只是需要打开一些外部 URL,那么您可以使用 Amr 提供的解决方案(location.href)。

但是,当您需要导航到任务流内的另一个视图或应用程序内的另一个页面或执行某些操作时。您需要使用操作事件队列。

要从 javascript 获取支持 bean,您必须使用serverListenercomponent. 然后,您可以像这样从 javascript 将消息路由到您的侦听器:
带有附加参数param1传递和 serverListener 附加到 id 组件的示例cmp1。(不要忘记clientComponent=true为这个组件添加选项。

var evenSource = AdfPage.PAGE.findComponent("cmp1");
var paramValue = "parameter value";
AdfCustomEvent.queue(eventSource, "uploadProgress", {param1: paramValue1}, true);

这样,您将把事件路由到服务器,然后您可以在 bean 导航方面做任何您想做的事情。

您可以在此处获得更多详细信息。
示例也可能有用。

于 2013-10-24T16:21:04.113 回答