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

Oracle Apex: How can I restrict a numeric field in a form to allow numbers only?

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

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

除了将其类型设置为 数字字段 .

之外,您绝对不需要做任何事情

是的,您可以键入任何您想要输入的内容,但 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;
    

我已经为这个用例创建了一个博客 post。请参考以下link

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

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

万一有人需要答案....

在页面中输入这个 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 = "";
      }
    });
  });
}

然后到你要限制为数字的页面项目,然后右键,添加动态动作,当:事件:按键,选择类型:项目,项目(你选择的项目),添加一个真实的动作...并让它执行 JS 代码,然后输入此代码...将页面项目替换为您的页面项目名称...

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

而且它只会让您在项目中输入数字。