1

私はjavascriptとapexに非常に慣れておらず、いわば仕事で学んでいます。
私が達成したいことを説明することから始めましょう:
ファンクションキーがブラウザ機能を実行/実行するのをブロックしようとしています (ヘルプを表示するには F1、検索には F3 など)。それらをブロックするJavaScriptコードを見つけましたが、その後何をすべきかわかりません。
たとえば、ユーザーが F1 を押したときに、ヘルプを表示するのではなく、apex でプロセスを実行する必要があります。
このようなプロセスは、たとえば、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;
   };
});

これは動的アクションに変換できます (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;            
}

はるかにきれいできれいです。そして、あなたは今それらに慣れてください!それらについても読んでください。

2 番目の部分に進みます。

つまり、たとえば F1 を押したときに、ヘルプを表示するのではなく、apex でプロセスを実行する必要があるということです。たとえば、apex ページのテキスト フィールドのすべての情報をデータベースに保存したいと考えています。どうすればいいでしょうか。アラートの代わりに私の小さなコードを参照してください。プロセスを実行するにはどうすればよいですか?また、そのようなプロセスを作成するにはどうすればよいでしょうか?

これは私を不思議に思います (そして眉をひそめますが、ほんの少しです)。すでにapexについてどの程度知っていますか? 問題はありませんが、これはあなたが求めている基本的な機能です。

ウィザードによって生成されたレポートとフォーム ページがあるとします。この javascript のような奇妙なものはなく、必要最小限のものしかないとします。
レポートからフォーム ページに移動します。プロセスを通じて値がフェッチされ、ページがレンダリングされます。ここで、いくつかの値を変更してページを送信します。送信された値は、ページ処理で処理され、データを挿入/更新/削除する行処理プロセスを通過します。

その概念に慣れていない場合は、少なくともOracle® Database 2 日で Application Express 開発者ガイド( Oracle Apex のドキュメント)に従うことを強くお勧めします。多くの開発者は、このガイドを一瞥することなく、真っ先に飛び込みます。しないでください。この短い (実際には数時間程度の) ガイドでは、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 に答える