反饋已提交

網絡繁忙

JS校驗填報值是否在資料庫中存在

1. 概述

1.1 應用場景

使用者希望在某個欄位(如收件人、複本人)輸入多個值後,即時校驗輸入人員ID是否存在,如不存在,則彈窗提醒。如下圖所示:

1722331169772863.jpg

1.2 實現思路

給填報元件新增編輯結束事件,透過使用 JS 的取陣列差集,再判斷差集長度的方法實現。

// 差集 陣列arr1相對於arr2所沒有的
let diff = arr1.filter(function (valreturn arr2.indexOf(val) === -1 })

2. 範例

2.1 資料準備

建立範本,建立資料查詢資料集 ds1,查出資料庫中的僱員資訊,其中 ID 欄資料將作為填報時允許輸入員工ID比對集。

SQL 語句為:SELECT * FROM s僱員

1722330047406694.jpg

2.2 報表設計

設計填報表格,A1~C1 儲存格新增表頭,給 A2~C2 儲存格 新增「正文元件」,並設定向下擴展。如下圖所示:

1722330506873872.jpg

2.3 新增事件

選中 A2 儲存格的「正文元件」,為元件新增一個「編輯結束」事件。如下圖所示。

事件新增一個參數 pm,值為公式:ds1.select(僱員ID),該參數用來獲取資料庫中僱員ID的資訊,構成 ID 陣列。

1722330945168033.png

avaScript 程式碼如下:

注1:需將使用者輸入字串間的分隔符統一更換為英文狀態下的逗號,本案例以分號為例做了轉換。

注2:由於僱員ID組成的陣列為數值陣列,而儲存格內多值組成的陣列為字串陣列,故程式碼中需將 pm 轉為字串陣列,才能正確取陣列間差集。

var id = this.getValue();//獲取當前儲存格值
//建立正則運算式將值內的";"轉為","
var str=';';
var value = id.replace(new RegExp(str,'gm'),',');
//alert(value);
var arr1 = value.split(',');//字串陣列
//alert(arr1);
let arr2=pm.map(String);//將pm由數值陣列轉換為字串陣列
//alert(arr2);
//取arr1有而arr2所沒有的陣列物件組成的差集
let diff = arr1.filter(function (val) { return arr2.indexOf(val) === -1 })
//alert(diff);
//去除空陣列
diff=$.grep(diff,function(x){return $.trim(x).length>0;});
//判斷差集陣列的長度,若不為0,則表示儲存格記憶體在不屬於資料庫中的值,彈出提示。
if(diff !=0){
 alert('僱員ID:'+diff+'不存在');
}


2.4 效果预览

保存模板,点击「填报预览」。效果如下图所示:

注:不支持移动端。

2024-07-30_17-19-04.jpg


3. 模板下载

附件列表


主題: 填報應用
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙