使用我执行的相同验证/处理,基于此线程:
在 Oracle APEX v4.2.2 中通过 Ajax 调用 Oracle 函数进行现场验证 https://stackoverflow.com/questions/21474303/calling-an-oracle-function-via-ajax-for-on-the-spot-validation-purposes-in-oracl
我现在有一个表格形式,可以有 1 到 n 行,但是当用户按下“应用”按钮时,我需要执行基于上面线程的相同类型的验证,即:
一组示例行可能类似于:
Col1 Col2 Col3 Col4
----------------------------
A 10 20 30
B 5 8 9
C 92 88 12
D 1 2 44
E 95 77 88
基于上述场景,当用户通过动态操作/Ajax (apex.server.process) 调用按下“应用”按钮时,我需要使用上述四列(此处没有使用复选框,只需选择列表,选择列值),致电我的
ajax进程检查是否:
(Col2 > Col4) for all rows
如果是这样,则通过 javascript 返回一条警报消息给用户,指示发现数据存在问题(即来自 apex.server.process 的无效响应)。
在将记录提交到数据库之前,我基本上需要检查所有行的验证。
理想情况下,我想通过 DA/Ajax/jQuery 解决这个问题。
我将如何尝试解决它。请注意,这并不涵盖所有(任何?)偶发事件或许多错误处理。您必须自己详细说明一下。例如,我使用了选择器的输入,您需要“选择”。数组可能不匹配。您可能需要一个完全不同的选择器,例如 td[headers]。也许您的返回对象需要保存其他或更多值。您的 js 可能需要更多扩展。
尽管如此,它应该为您提供一个良好的起点!
JavaScript:
function validaterows(){
var arrf01 = [], arrf02 = [];
//fetch all the values from the source columns and put them in
//a javascript array.
$("input[name=f03]").each(function(){
arrf01.push($v(this));
});
$("input[name=f04]").each(function(){
arrf02.push($v(this));
});
//provide the constructed arrays to the on-demand process by using
//the global f## arrays
apex.server.process ( "MY_PROCESS", {
f01: arrf01
, f02: arrf02
}, {
, success: function( pData ) {
//pData should be an object, because jquery will have parsed the returned json-string
apex.debug(pData);
$.each(pData.validationArray, function(index, value){
if ( value === 'INVALID' ) {
// do something here when the result is invalid
// maybe you want to color something red for example
alert('The data at row '+index+' is not valid!');
};
});
}
} );
}
按需plsql流程:
DECLARE
l_return VARCHAR2(4000);
BEGIN
FOR i IN apex_application.g_f01.count
LOOP
-- remember: the f## arrays are varchar arrays. Important for comparisons.
-- Also take into account that the values could NOT be numeric at all.
-- you'll probably want to run each value through an is-number check or else
-- you'll run into ORA errors
IF to_number(apex_application.g_f01(i)) > to_number(apex_application.g_f02(i))
THEN
l_return := l_return || ',"INVALID"';
ELSE
l_return := l_return || ',"VALID"';
END IF;
END LOOP;
IF l_return IS NOT NULL
THEN
-- create a json string
-- holds an object with 1 property (validationArray) with the value being
-- an array holding a value for each row submitted
l_return := '{"validationArray":['||LTRIM(l_return, ',')||']}';
END IF;
-- write the output to the buffer
htp.p(l_return);
END;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)