2012-10-01 43 views
1

我对JavaScript和apex非常新,并且正在学习这项工作。
让我开始描述我想实现什么:
我试图阻止运行/执行浏览器功能(F1来调出帮助,F3查找等)功能键。我发现JavaScript代码阻止他们,但不知道该怎么做。
例如,当用户按F1时,它不应该显示帮助,而是在顶点执行一个过程。
这样的过程可以例如是将顶点页面文本字段上的所有信息保存到数据库。
我该怎么做?如何从javascript执行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> 

回答

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>​ 
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页面文本字段到数据库。我将如何 去解决它。看到我的小代码,而不是警报,我怎么去 执行一个过程,我该如何去写这样一个 过程?

这让我感到惊讶(和皱眉,但只是一点点)。你对顶点已经很熟悉了吗?没有冒犯性,但这是你询问的基本功能。

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

如果你不熟悉这个概念,我强烈建议您至少要经过Oracle® Database 2 Day + Application Express Developer's GuideOracle Apex documentation)跟随。许多开发人员只是在没有给出这个指导的情况下一跃而过。别。这个简短(真的,可能是几个小时)指南将教你一些顶点的基础知识!
重要的事情,例如会话状态和提交页面,对于理解它的功能至关重要。

现在,假设我们有一个带有这个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回调是非常有趣和有用的,但我建议你先解决这个问题之前先掌握一些基础知识!