如何从javascript执行apex进程

时间:2012-10-01 11:14:52

标签: javascript oracle-apex

我是javascript和apex的新手,我正在学习工作,可以这么说 让我首先描述一下我想要实现的目标:
我试图阻止功能键运行/执行浏览器功能(F1显示帮助,F3查找等)。我找到了阻止它们的javascript代码,但之后不知道该怎么做 例如,当用户按F1时,它不应显示帮助,而是在顶点执行一个过程 例如,这样的过程可以将顶点页面文本字段上的所有信息保存到数据库中 我怎么能这样做?

请参阅我的示例代码:如何处理警报,而不是警报,我将如何执行流程?如何编写此类流程?


<script language="javascript">
function my_onkeydown_handler() {
    switch (event.keyCode) {
        case 112: // 'F1'      
            document.onhelp = function() {
                return (false);
            }
            window.onhelp = function() {
                return (false);
            }
            alert("F1");
            NewEntry();
            break;
    }
}
</script>

2 个答案:

答案 0 :(得分:1)

$(document).keydown(function(e){
   if(e.which===112){
      console.log('F1ed');
      //NewEntry();
      return false;
   };
});

哪些可以转换为动态操作(您没有指定apex版本。动态操作是在4.0版本中引入的)。你为什么要用它们?它们非常方便,您可以使用它们轻松利用javascript而不需要了解很多,并且可以在页面结构中看到它们。这样,您就不需要在页面的多个部分中混淆javascript。即使对于没有预定义操作的更高级的javascript,您仍然可以使用“执行Javascript”将自己的代码放入其中。再次,可访问性和可维护性!利用它!

创建新的动态动作。

  • 事件:按键
  • 选择类型:DOM对象
  • DOM对象:document
  • 条件:无

关于(真实)行动:

  • 操作:执行Javascript代码

代码:

var e = this.browserEvent;
switch (e.which) {
   case 112: // 'F1'      
      alert("F1");
      return false;            
}

更好更清洁。现在,你更好地适应他们!阅读它们。

到第二部分:

  

我的意思是,当按下F1时,它不能显示帮助   但是在顶点执行一个进程,例如我想保存所有进程   有关apex页面文本字段的信息到数据库。我怎么样?   去吧。看到我的小代码,而不是警报,我该怎么走   关于执行流程以及如何编写这样的流程   过程

这让我感到惊讶(并且皱眉,但只是一点点)。你对顶点有多熟悉?没有冒犯,但这是你要问的相当基本的功能。

假设您有一个由向导生成的报告和表单页面。假设你没有奇怪的东西,例如这个javascript,但只是准系统 您从报告转到表单页面。通过进程获取值并呈现页面。现在,您可以更改某些值并提交页面。然后在页面处理中处理提交的值,并通过行处理过程,该过程将插入/更新/删除数据。

如果您不熟悉这个概念,我强烈建议您至少遵循Oracle® Database 2 Day + Application Express Developer's GuideOracle Apex documentation)。许多开发人员只是在没有给出这个指南的情况下先跳头。别。这个SHORT(实际上,可能是几个小时)指南将教你一些非常基本的apex!
会话状态和提交页面等重要事项对于理解它的作用至关重要。

现在,假设我们有一个带有这个javascript的表单页面。按F1更新值(读取:按F1提交页面并调用行处理以处理提交的值),您可以使用apex javascript api'sapex.submit('APPLY')DOC)。
这将提交请求APPLY的页面。这个值很重要。请注意,按钮将提交其名称设置为请求值,并且行处理根据有效请求值列表执行不同的处理。

var e = this.browserEvent;
switch (e.which) {
   case 112: // 'F1'      
      alert("F1");
      apex.submit('APPLY');
      return false;            
}

进一步阐述: 还有AJAX回调。这些是服务器端上的进程,可以通过对服务器的javascript调用来调用。这些进程是PLSQL代码,例如可用于将数据返回到调用javascript函数,并避免整页刷新/提交。
它当然也可以用来保存数据。必须将数据传递到服务器,然后该过程才能处理该数据。例如,当某个字段已更改并且您希望立即将其保存到数据库但不希望提交完整页面时。回调将是一个plsql块,它在表上执行更新。

Ajax回调是非常有趣和有用的,但我建议你在解决这个问题之前先掌握基础知识!

答案 1 :(得分:0)

修改后的代码:jsfiddle

 <script language="javascript">
   document.onkeydown = function (e) {
    switch (e.keyCode) {
        case 112: // 'F1'      
            e.preventDefault(); // prevent default behavior.
             e.returnValue = false; // for IE to  prevent default behavior.
            alert("F1");
            NewEntry();
            return false;            
    }
}
</script>​