Saddam Meshaal Saddam Meshaal - 2 months ago 36
Javascript Question

Oracle APEX | Validate Tabular form Row by Row

I have tabular form to add order details for an order,

Tabular form has

Popup LOV
with this custom attribute:

onchange="javascript:do_cascade(this);"


here is the code of the last function

function do_cascade(pThis)
{

var row_id=pThis.id.substr(4);
apex.server.process("cascade_order_values", { x02: $(pThis).val()},
{type:"GET", dataType:"json", success:function(json)
{
var cond=0;
// this var as flag changes to 1 when the new value found in tabular form.
var l_code=$(pThis).val();
// to catch selected value to compare it with tabular form values
for (i =row_id;i>0;i=i-1)
// this loop in order to check all tabluar form #f02_ column values
{
var id=('000'+i);//.slice(-4,0);
var curr_id='#f02_'+id;
var curr_code=$(curr_id).val();
if(curr_code==l_code)
{
$('#f05_'+id).val('got it');
$('#f05_'+id).focus();
// i=0; cond=1;
} else cond=0;
}
if (cond==0)
{
$('#f06_'+row_id).val(json.price);
$('#f04_'+row_id).val(json.pro_name);
}
else {
// I want to write something here to delete the new added row
}
}
}
);
}


what the last function do shortly: when selected value change of the Popup LOV the function call application process to query and return some data and set them to the tabular form fields, and this perform correctly.
here is the application process than this function process:

declare
price number;
pro_code nvarchar2(20):=null;
pro_name nvarchar2(50);

begin
pro_code:=apex_application.g_x02;

SELECT nvl(sell_price,0) into price from products where product_code=pro_code;

SELECT C.CAT_NAME || ' - ' || U.UNIT_NAME into pro_name
FROM PRODUCTS P , CATEGORIES C, UNITS U
WHERE P.CAT_ID=C.CAT_ID AND P.UNIT_ID=U.UNIT_ID AND P.PRODUCT_CODE=pro_code;

sys.htp.p('{"price":"'||price||'", "pro_name":"'||pro_name||'","code":"'||pro_code||'"}');
EXCEPTION
WHEN others
THEN
pro_name:='الرقم غير صحيح';
sys.htp.p('{"price":"'||0||'", "pro_name":"'||pro_name||'","code":"'||pro_code||'"}');
end;


THE PROBLEM IS:

I want to check if the selected product code exist in the tabular form
that mean check tabular form row by row from current row to the first one
when the selected value exists move the focus to item
#f05_
and set a value to it
and then delete the new row that was added to the tabular form

How can I do that Please.

Help Please!..

Answer

The problem is in deleting the whole row from tabular form,

so replace your conditional lines with this code:

if(curr_code==l_code) 
{ 
   $(pThis).val(''); 
   $('#f02_'+row_id).closest("tr").remove();
   $('#f05_'+id).val(parseInt($('#f05_'+id).val())+1); 
   $('#f05_'+id).focus(); i=0; cond=1; } 
else 
    cond=0;