使文本字段在APEX中只接受数值



我有一个APEX应用程序,我正在工作,需要使一个字段只接受数值。

我想有一个验证显示"只允许数值"当用户输入非数字的字母或其他字符时

我怎样才能做到这一点?

Thanks in advance

如果您使用translate函数,则可以"检测"。字符串是否包含数字以外的内容(本例也允许十进制点):

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>

所以,如果结果是NULL,那么它就是一个有效值。

在Apex中,您将创建如下所示的验证(返回错误文本的函数):

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

这些字段定义更多地是关于服务器端固有的验证,这些验证将代表您运行,以确保提交的数据是数字。

我认为最好的情况是有一些客户端验证,给用户即时反馈-要么有消息,要么自动删除。我不确定是否可以强制一个HTML元素只允许数字。

如果您确实需要在每个新字符之后验证,您可以尝试添加基于Key Release事件和Execute JavaScript code的动态动作。像这样

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

好了,经过几个小时的尝试,以下是对我有效的方法。

  1. 在页面中单击。在函数和全局变量声明中
function isInputNumber(evt){

var ch = String.fromCharCode(evt.which);

if(!(/[0-9]/.test(ch))){
evt.preventDefault();
}

}
  1. 在"Page HTML Body Attribute">
onkeypress="isInputNumber(event)"

就是这样。这将防止用户在输入字段中输入字母。

最新更新