変更イベントをフィールドにバインドするには、いくつかの方法があります。td ヘッダーを介してターゲットを設定するか、列を編集し、「要素属性」フィールドにクラス (「fireAjax」など) を追加できます。その後、JavaScript コードを使用してイベントにバインドするか、動的アクションを介してこれを行うことができます。
次の 2 つの形式のいずれかで ajax 呼び出しを実行できます: htmldb_Get または jquery.post を使用:
$('td[headers="ENAME"] input').change(function(){
var ajaxRequest = new htmldb_Get( null , $v('pFlowId') , 'APPLICATION_PROCESS=get_job' , $v('pFlowStepId'));
ajaxRequest.addParam('x01', $(this).val());
ajaxResult = ajaxRequest.get();
$(this).closest("tr").find("td[headers='JOB'] input").val(ajaxResult);
});
また
$('td[headers="ENAME"] input').change(function(){
var that = this;
$.post('wwv_flow.show',
{"p_request" : "APPLICATION_PROCESS=get_job",
"p_flow_id" : $v('pFlowId'),
"p_flow_step_id" : $v('pFlowStepId'),
"p_instance" : $v('pInstance'),
"x01" : $(this).val()
},
function(data){
var eJob = $(that).closest("tr").find("td[headers='JOB'] input");
eJob.val(data);
},
"text"
);
});
このアプリケーション プロセスでは、実行ポイント「AJAX コールバック」を含むページで定義されています。
名前: get_job
DECLARE
l_job emp.job%TYPE;
BEGIN
SELECT job
INTO l_job
FROM emp
WHERE ename = apex_application.g_x01;
htp.p(l_job);
EXCEPTION WHEN no_data_found THEN
htp.p('');
END;
このプロセスでのエラーと返品の処理はあなた次第です。no_data_found
やなどの一般的なエラーを必ずキャッチしてくださいtoo_many_rows
。それらが発生してトラップされない場合、javascript コールバック コードがエラーを処理できないため、javascript エラーが発生する可能性が高くなります (apex では、エラー メッセージを含むフル ページの html になります)。
また、ご覧のとおりx01
、apex の 10 個のグローバル一時変数の 1 つである変数を使用しています。この方法では、ページ アイテムを使用してその値をセッション状態に送信する必要はありません。
このコードを動的アクションに入れたい場合は可能です。動的アクションを選択する場合は、イベントおよび jQuery セレクターとして「変更」を選択し、真のアクションとして JavaScript コードを実行します。その後、関数コードをそこに配置できます。$(this)
する必要がある例外を除いて$(this.triggeringElement)