Oracle10g 用另一个字段的更改填充表格表单字段值
在我的Oracle Apex应用程序中,有一个带有Oracle10g 用另一个字段的更改填充表格表单字段值,oracle10g,oracle11g,oracle-apex,tabular-form,Oracle10g,Oracle11g,Oracle Apex,Tabular Form,在我的Oracle Apex应用程序中,有一个带有说明、上一个\u值、单价字段的表格 我需要用description字段上的数据填充previous\u value字段的值。我有一个查询,可以从数据库中获取previous\u value字段的值。我需要将onChange事件添加到description字段。随着description字段的更改,应使用我的查询填充previous\u value字段的值 我如何才能做到这一点?您可以通过多种方式将更改事件绑定到字段。目标通过td报头, 或者编辑列
说明、上一个\u值、单价
字段的表格
我需要用description
字段上的数据填充previous\u value
字段的值。我有一个查询,可以从数据库中获取previous\u value
字段的值。我需要将onChange
事件添加到description
字段。随着description
字段的更改,应使用我的查询填充previous\u value
字段的值
我如何才能做到这一点?您可以通过多种方式将更改事件绑定到字段。目标通过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);
});
或
使用此应用程序进程,在执行点为“AJAX回调”的页面上定义:姓名:找工作
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;
请记住,在此过程中处理错误和返回取决于您!确保捕获常见错误,例如未找到任何数据
和/或行太多
。如果这些错误发生且未被捕获,您将很有可能遇到javascript错误,因为您的javascript回调代码无法处理该错误(在apex中,该错误将是一个包含错误消息的整页html)。另外,正如您所看到的,我正在使用
x01
变量,它是apex中10个全局临时变量之一。这样,就不需要使用页面项并将其值提交到会话状态
如果您想将此代码置于动态操作中,您可以。如果要执行动态操作,请选择“更改”作为事件和jQuery选择器,选择“执行javascript代码”作为真正的操作。然后,您可以将函数代码放入其中。除了
$(this)
需要是$(this.triggeringElement)
说明
我的表格形式中的列是自动完成
。它还可以使用ajax调用。当我从“自动完成”列表中选择“描述”时,这不起作用。如果我没有从“自动完成”列表中选择而编写完整的描述,这就是工作。我如何解决这个问题?您有什么自动完成功能?jQuery的?如果是,您是否有一些绑定到自动完成事件的内容可以取消某些内容?更改事件应该只针对自动完成项触发,我只是亲自尝试了一下,同时使用了自动完成项的更改事件和绑定到该项的更改事件。jQuery one with Ajax回调此代码。从下载我一开始看不出有什么问题。我想你是用一个动态动作来绑定变更事件的吧?从“自动完成”下拉列表中选择项目后,它不会激发,但在不拾取时会激发?您确定并且尝试过使用alert/console.log行吗?如果一切正常,是否可以尝试更改自动完成的焦点选项:focus:function(event,ui){event.preventDefault();}
而不是返回false?也可以为更改事件添加一个函数,只是为了调试:change:function(){alert(“autocomp change”);}
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;