1

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

请参阅我的示例代码:代替警报,我将如何执行流程以及如何编写这样的流程?


<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>
4

2 回答 2

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

可以将其转换为动态操作(您没有指定顶点版本。动态操作是在 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 中执行一个进程,例如,我想将 apex 页面文本字段上的所有信息保存到数据库中。我该怎么办。看看我的小代码,而不是警报,我将如何执行一个流程以及如何编写这样一个流程?

这让我想知道(和皱眉,但只是一点点)。你对 Apex 有多熟悉?无意冒犯,但这是您要询问的相当基本的功能。

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

如果您不熟悉该概念,我强烈建议您至少遵循Oracle® Database 2 Day + Application Express Developer's GuideOracle Apex 文档)。许多开发人员只是一头雾水,没有看一眼本指南。不。这个简短(实际上,可能是几个小时)指南将教您一些顶点的基础知识!
会话状态和提交页面等重要事项对于理解它的作用至关重要。

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

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

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

Ajax 回调非常有趣且有用,但我建议您在解决此问题之前先掌握基础知识!

于 2012-10-01T12:19:31.477 回答
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>​
于 2012-10-01T11:34:13.177 回答