#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); });
И это позволит вам вводить только числа в элемент.