Oracle Apex: как я могу ограничить числовое поле в форме, чтобы разрешить только числа?

#javascript #jquery #oracle #plsql #oracle-apex-5

#javascript #jquery #Oracle #plsql #oracle-apex-5

Вопрос:

У меня есть элемент в форме, который является числовым полем, и я хочу каким-то образом убедиться, что в поле принимаются только числа. Если пользователи вводят буквы, я хочу, чтобы поле отклоняло его.

Я уже пробовал проверку, но она не увенчалась успехом, могу ли я в любом случае добиться этого с помощью динамического действия с помощью кода 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 и объявление глобальной переменной….

 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); });
  

И это позволит вам вводить только числа в элемент.