どのように私はそれを解決しようとしますか。これは、すべての (何か?) 偶発性や多くのエラー処理をカバーしていないことに注意してください。自分で少し詳しく説明する必要があります。たとえば、セレクターに入力を使用した場合は、「select」が必要です。配列が一致しない場合があります。 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;