您可以通過多種方式將更改事件綁定到該字段。通過td標題目標, 或編輯列,並在「元素屬性」字段中添加一個類(例如「fireAjax」)。 然後,您可以使用javascript代碼綁定到事件,或者通過動態操作來完成此操作。
你可以在任一兩種形式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);
});
OR
$('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個全局臨時變量之一。通過這種方式,不需要使用頁面項並將值提交到會話狀態。
如果你想把這段代碼放在動態行爲中,你可以。選擇「更改」作爲事件和jQuery選擇器,如果你去做一個動態的動作,並且真正的動作選擇執行javascript代碼。然後你可以把功能代碼放在那裏。除了$(this)
將需要$(this.triggeringElement)
來源
2013-01-22 11:36:35
Tom
我的表格形式的'description'列是'autocomplete'。它也使用ajax調用。當我從自動完成列表中選擇描述時,這不起作用。如果我沒有從自動完成列表中選擇寫完整的描述,這是工作。我怎麼能解決這個問題? – Bishan
你有什麼樣的自動完成功能?一個jQuery嗎?如果是的話,你有什麼事情可以取消自動完成的事件嗎?更改事件應該簡單地觸發一個自動完成項目,我自己嘗試了自動完成的更改事件和綁定到該項目的更改事件。 – Tom
jQuery one with Ajax回撥 – Bishan