2012-10-01 41 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回調是非常有趣和有用的,但我建議你先解決這個問題之前先掌握一些基礎知識!