我有一个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");
}
好了,经过几个小时的尝试,以下是对我有效的方法。
- 在页面中单击。在函数和全局变量声明中
function isInputNumber(evt){
var ch = String.fromCharCode(evt.which);
if(!(/[0-9]/.test(ch))){
evt.preventDefault();
}
}
- 在"Page HTML Body Attribute">
onkeypress="isInputNumber(event)"
就是这样。这将防止用户在输入字段中输入字母。