我有一個正在開發的 APEX 應用程式,需要創建一個僅接受數值的欄位。
我想要一個驗證,當用戶輸入字母或其他非數字字符時顯示“只允許數字值”。
我怎樣才能做到這一點?
提前致謝
uj5u.com熱心網友回復:
如果您使用該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;
uj5u.com熱心網友回復:
這些欄位定義更多地是關于將代表您運行以確保提交的資料是數字的固有服務器端驗證。
我認為您將獲得的最好的結果是進行一些客戶端驗證,以便為用戶提供即時反饋 - 有訊息或自動剝離。我不確定您是否可以強制 HTML 元素只允許數字。
uj5u.com熱心網友回復:
如果您確實需要在每個新角色之后進行驗證,您可以嘗試根據Key Release事件和Execute JavaScript code何時添加動態動作。像這樣的東西
if ( $v("P2_NEW") !== ""
&& isNaN($v("P2_NEW"))) {
alert("Not a number");
}
uj5u.com熱心網友回復:
好的,經過幾個小時的嘗試,以下是對我有用的。
- 在頁面中點擊。在“函式和全域變數宣告”部分添加以下代碼:
function isInputNumber(evt){
var ch = String.fromCharCode(evt.which);
if(!(/[0-9]/.test(ch))){
evt.preventDefault();
}
}
- 在“頁面 HTML 正文屬性”部分添加以下代碼:
onkeypress="isInputNumber(event)"
就是這樣。這將防止用戶在輸入欄位中輸入字母。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/336366.html
