Oracle Apex:如何将表单中的数字字段限制为仅允许数字?

Posted

技术标签:

【中文标题】Oracle Apex:如何将表单中的数字字段限制为仅允许数字?【英文标题】:Oracle Apex: How can I restrict a numeric field in a form to allow numbers only? 【发布时间】:2020-09-28 19:00:11 【问题描述】:

我有一个表单项,它是一个数字字段,我想以某种方式确保该字段只接受数字。如果用户输入字母,我希望该字段拒绝它。

我已经尝试过验证,但没有成功,我是否可以通过使用 javascript 代码或“pl/sql 代码”的动态操作来实现这一点?

【问题讨论】:

【参考方案1】:

除了将其类型设置为数字字段之外,您绝对不需要做任何事情。

是的,您可以在其中键入任何您想要的内容,但 Oracle 除了数字之外不会存储任何内容。它会引发“字段名称必须是数字”错误并停止。

为什么要重新发明***?


如果必须,请尝试对该项目进行动态操作(我们称之为P13_DEPTNO)

当事件:按键

选择类型:项目

项目:P13_DEPTNO

真正的行动:执行 PL/SQL 代码(带有“要提交的项目”:P13_DEPTNO):

begin
  if not regexp_like(:P13_DEPTNO, '^\d+$')
  then
    raise_application_error(-20000, 'Digits only');
  end if;
end;

【讨论】:

【参考方案2】:

有时您确实需要阻止用户插入除数字之外的任何其他内容。 特别是如果此字段用于计算。所以你可以使用这个https://www.foxinfotech.in/2020/02/oracle-apex-allow-only-integer-value-using-jquery.html

【讨论】:

【参考方案3】:

我为此用例创建了一篇博文。请参考以下链接

https://akilramesh.blogspot.com/2021/10/allow-only-numbersdecimal-in-numbertext.html

【讨论】:

【参考方案4】:

如果有人需要答案......

在页面JAVASCRIPT和GLOBAL变量声明中输入这个......

function setInputFilter(textbox, inputFilter) 
  ["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) 
    textbox.addEventListener(event, function() 
      if (inputFilter(this.value)) 
        this.oldValue = this.value;
        this.oldSelectionStart = this.selectionStart;
        this.oldSelectionEnd = this.selectionEnd;
       else if (this.hasOwnProperty("oldValue")) 
        this.value = this.oldValue;
        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
       else 
        this.value = "";
      
    );
  );


然后到你想限制为数字的页面item,右键,添加动态动作,when:事件:按键,选择类型:items,items(你选择的item),添加一个true action.. .并让它执行JS CODE,然后输入此代码...用您的页面项目名称替换页面项目...

setInputFilter(document.getElementById("PXX_XXXX"), function(value) 
  return /^-?\d*$/.test(value); );

它只会让你在项目中输入数字。

【讨论】:

以上是关于Oracle Apex:如何将表单中的数字字段限制为仅允许数字?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Apex 中文本项字段中的字符限制

如何将 SQL 查询中一个字段的值用于 Oracle Apex 上另一个字段的值列表?

Oracle Apex:如何计算主从表单上的详细记录

在 oracle apex 中通过电子邮件发送富文本字段

Oracle Apex 页面进程不存在条件问题

我想在 ORACLE APEX 的表单中添加非数据库字段