次の項で、Application Express固有のイベントについて説明します。ほとんどの場合、ブラウザとAPEX固有のイベントへの応答には動的アクションを利用します。この項は、これらのイベントを直接JavaScriptコードから使用しようとするJavaScriptプログラマ向けです。
親トピック: JavaScript API
このイベントは、動的アクションの「ダイアログを閉じる」アクション、または「ダイアログを閉じる」プロセスによって、Application Expressのモーダル・ダイアログ・ページを閉じます。これは、「ダイアログのクローズ」動的アクション・イベントと同等です。このイベントは、接続の状態が変更されたときにトリガーされます。
ボタンの場合はボタン要素です。リストのダイアログ・ページへのリンクの場合はリスト・リージョン要素です。グローバル・トップまたはサイド・ナビゲーションで使用されるリストの場合、またはトリガー要素を特定できないその他のケースの場合、イベントはドキュメントapex.gPageContext$
でトリガーされます。イベント・ハンドラは、これらのプロパティを持つオブジェクト引数を受け取ります。
表37-81 apexafterclosedialog
プロパティ | タイプ | 説明 |
---|---|---|
|
String |
閉じられたダイアログ・ページのページ番号。 |
|
String |
「ダイアログを閉じる」プロセスまたは動的アクション設定「戻すアイテム」でリストされた各ページ・アイテムには、アイテムと同じ名前のプロパティがあります。値はアイテムの値です。 |
注意:
このイベントは、モーダル・ダイアログ・ページではなく、親すなわちコール側ページでトリガーされます。方法に関係なく、ダイアログがいつ閉じられるかを確認したい場合には、jQuery UIのdialogcloseイベントを使用します。
例
この例では、モーダル・ダイアログ・ページが閉じられるときに、emp
という静的IDのリージョンをリフレッシュします。
apex.gPageContext$.on( "apexafterclosedialog", function( event, data ) { apex.region( "emp" ).refresh(); });
親トピック: イベント
このイベントは、様々なページ・アイテムまたは列アイテムがサーバーからの新しいコンテンツやデータによってリフレッシュされた直後に、それらのアイテムによってトリガーされます。これは、動的アクション・イベントの「リフレッシュ後」と同等です。具体的には、カスケード式LOVの親アイテム属性をサポートするアイテムはいずれも、このイベントをトリガーします。refreshObject
オプションを指定した場合、このイベントはapex.server.plugin
およびapex.server.process
APIによってもトリガーされます。イベントは、アイテム要素、またはrefreshObject
によって指定された要素に対してトリガーされます。イベント・ハンドラは、refreshObjectData
で指定されたデータを受け取ります(存在する場合)。
例
この例では、リフレッシュの進行中に、B1
という静的IDのボタンを無効にします。
apex.jQuery( "body" ).on( "apexbeforerefresh", function() { apex.jQuery( "#B1" ).prop( "disabled", true); }).on( "apexafterrefresh", function() { apex.jQuery( "#B1" ).prop( "disabled", false); });
親トピック: イベント
このイベントは、様々なページ・アイテムまたは列アイテムがサーバーからの新しいコンテンツやデータによってリフレッシュされる直前に、それらのアイテムによってトリガーされます。これは、動的アクション・イベントの「リフレッシュ前」と同等です。具体的には、カスケード式LOVの親アイテム属性をサポートするアイテムはいずれも、このイベントをトリガーします。refreshObject
オプションを指定した場合、このイベントはapex.server.plugin
およびapex.server.process
APIによってもトリガーされます。イベントは、アイテム要素、またはrefreshObject
によって指定された要素に対してトリガーされます。イベント・ハンドラは、refreshObjectData
で指定されたデータを受け取ります(存在する場合)。
例
この例では、リフレッシュの進行中に、B1
という静的IDのボタンを無効にします。
apex.jQuery( "body" ).on( "apexbeforerefresh", function() { apex.jQuery( "#B1" ).prop( "disabled", true); }).on( "apexafterrefresh", function() { apex.jQuery( "#B1" ).prop( "disabled", false); });
親トピック: イベント
このイベントは、apex.submit
またはapex.confirm
によってページが発行されたときにトリガーされます。これには、アクション「ページの送信」と、動的アクション「ページの送信」のボタンが含まれます。これは、動的アクション・イベントの「ページの送信前」と同等です。ページの検証前にトリガーされます。apex.gPageContext$
でトリガーされます。これは、Desktop UIページと、jQuery Mobile UIページのpage divのドキュメントです。このイベントは、動的アクションの「確認」または「イベントの取消」によって取り消すことができるので、実際に送信されるページに依存することはできません。ページが実際に送信される前に実行するコードが必要な場合は、apexpagesubmit
イベントを参照してください。
イベント・ハンドラが、実行時間の長い処理や非同期の処理を実行しないようにしてください。具体的には、同期または非同期のAjaxリクエストを実行しないようにします。イベント・ハンドラは、リクエスト値である文字列引数を受け取ります。
例
この例では、ページ・アイテムP1_CHECK_ME
に対して追加の検証を実行します。これによって送信ボタンを機能させるには、「検証の実行」属性をYes
に設定し、アプリケーション互換性モードを5.1以上に、apex.submit
またはapex.confirm
の検証オプションをtrueに設定する必要があります。
apex.jQuery( apex.gPageContext$ ).on( "apexbeforepagesubmit", function() { var item = apex.item("P1_CHECK_ME" ), value = item.getValue(); if ( value !== "valid" ) { // replace with desired constraint check item.node.setCustomValidity( "Text field needs to be valid" ); }else { item.node.setCustomValidity( "" ); } });
親トピック: イベント
このイベントは、対話グリッドなど列アイテムをサポートするリージョンが、レコードの編集を開始するときにトリガーされます。一般的には、列アイテムに対して動的アクションを使用し、「初期化時に実行」属性をYes
に設定します。これは、「対話グリッド行の初期化」動的アクション・イベントと同等です。
編集を実行しているウィジェットでトリガーされます。すべての列アイテムが初期化された後でトリガーされます。イベント・ハンドラは、これらのプロパティを持つオブジェクト引数を受け取ります。
表37-82 apexbeginrecordedit
プロパティ | タイプ | 説明 |
---|---|---|
|
String |
主キー列の値。主キーが複数ある場合、これは主キー値をシリアライズしたJSON配列です。 |
|
モデル |
リージョン・ウィジェットによって使用されるモデル。 |
|
配列 | オブジェクト |
編集している現在のレコード。このレコードは、プロパティ・モデルで指定されるモデルに属し、必ずモデルAPIを使用して変更する必要があります。 |
注意:
モデルまたはレコードを使用するには、文書化されていないapex.model API
を使用する必要があります。
例
この例は、対話グリッドでEMP表を編集するapexbeginrecordedit
イベントに対応しています。リージョンには、emp
という静的IDが指定されます。SAL列には、c_sal
という静的IDが指定されます。
apex.region( "emp" ).widget().on( "apexbeginrecordedit", function( event, data ) { var salary = apex.item( "c_sal" ).getValue(); // use data.recordId or access any of the column items using apex.item API });
親トピック: イベント
このイベントは、対話グリッドなど列アイテムをサポートするリージョンが、レコードの編集を終了するときにトリガーされます。
編集を実行しているウィジェットでトリガーされます。列アイテムの変更があった場合にすべてのモデルが更新され、列アイテムが検証された後でトリガーされます。イベント・ハンドラは、これらのプロパティを持つオブジェクト引数を受け取ります。
表37-83 apexendrecordedit
プロパティ | タイプ | 説明 |
---|---|---|
|
String |
主キー列の値。主キーが複数ある場合、これは主キー値をシリアライズしたJSON配列です。 |
|
モデル |
リージョン・ウィジェットによって使用されるモデル。 |
|
配列 | オブジェクト |
編集している現在のレコード。このレコードは、プロパティ・モデルで指定されるモデルに属し、必ずモデルAPIを使用して変更する必要があります。 |
注意:
モデルまたはレコードを使用するには、文書化されていないapex.model API
を使用する必要があります。
例
この例は、対話グリッドでEMP表を編集するapexendrecordedit
イベントに対応しています。リージョンには、emp
という静的IDが指定されます。SAL列には、c_sal
という静的IDが指定されます。
apex.region( "emp" ).widget().on( "apexendrecordedit", function( event, data ) { var salary = apex.item( "c_sal" ).getValue(); // use data.recordId or access any of the column items using apex.item API });
親トピック: イベント
このイベントは、apex.submit
またはapex.confirm
によってページが発行されたときにトリガーされます。これには、アクション「ページの送信」と、動的アクション「ページの送信」のボタンが含まれます。ページの検証後にトリガーされます。apex.gPageContext$
でトリガーされます。これは、Desktop UIページと、jQuery Mobile UIページのpage divのドキュメントです。このイベントは、ページの送信前にページ・アイテムを設定または変更する最後のチャンスです。
イベント・ハンドラが、実行時間の長い処理や非同期の処理を実行しないようにしてください。具体的には、同期または非同期のAjaxリクエストを実行しないようにします。イベント・ハンドラは、リクエスト値である文字列引数を受け取ります。
例
この例では、ページの送信前にページ・アイテムP1_VALUE
を大文字に変更します。
apex.jQuery( apex.gPageContext$ ).on( "apexpagesubmit", function() { var item = apex.item("P1_VALUE"); item.setValue( item.getValue().toUpperCase()); });
親トピック: イベント
このイベントは、ウィンドウのサイズ変更が終了した200ミリ秒後にウィンドウでトリガーされます。ウィンドウのサイズ変更後に、このイベントがページ・コンテンツを調整またはサイズ変更するのをリスニングします。場合によっては、ウィンドウ・サイズ変更イベントよりこのほうが適しています。ウィンドウ・サイズ変更イベントはサイズ変更のたびに何度もトリガーされますが、このイベントはウィンドウのサイズ変更後に1度しか実行されないからです。
例
この例はapexwindowresized
イベントに対応しており、新しい高さと幅に基づいてページ・コンテンツを変更します。
apex.jQuery( window ).on( "apexwindowresized", function( event ) { var window$ = apex.jQuery( this ), height = window$.height(), width = window$.width(); // update page content based on new window height and width });
親トピック: イベント