Home > Net >  Make a text field accept only numeric values in APEX
Make a text field accept only numeric values in APEX

Time:10-22

I have an APEX app that I am working on and need to make a field to only accept numeric values.

I want to have a validation that displays "Only numeric values allowed" whenever the user inputs letters or other characters that are not numeric.

How can I achieve this?

Thanks in advance

CodePudding user response:

These field definitions are more about the inherent server-side validations that will run on your behalf to ensure the data submitted is numeric.

I think the best you're going to get is having some client side validation as well that gives the user immediate feedback - either has message, or auto-strip. I'm not sure if you can force a HTML element to only allow numerics.

CodePudding user response:

If you use the translate function, you can "detect" whether string contains something but digits (this example allows decimal dot as well):

SQL> with test (col) as
  2    (select '1234' from dual union all  --   valid
  3     select '12a4' from dual union all  -- invalid
  4     select '12.4' from dual union all  --   valid
  5     select 'abcd' from dual union all  -- invalid
  6     select '1#34' from dual            -- invalid
  7    )
  8  select col, translate(col, 'x0123456789.', 'x') result
  9  from test;

COL  RESU
---- ----
1234
12a4 a
12.4
abcd abcd
1#34 #

SQL>

So, if the result is NULL, then it is a valid value.

In Apex, you'd create validation (function that returns error text) which looks like this:

if translate(:P1_ITEM, 'x0123456789.', 'x') is not null then
   return 'Only numeric values allowed';
else
   return null;
end;  

CodePudding user response:

If you really need to validate after each new character, you can try to add Dynamic Action based on Key Release event and Execute JavaScript code when true. Something like this

if (   $v("P2_NEW") !== ""
    && isNaN($v("P2_NEW"))) {
  alert("Not a number");
}
  • Related