反馈已提交

网络繁忙

JS校验填报值是否在数据库中存在

  • 文档创建者:Rivery
  • 编辑次数:2次
  • 最近更新:RosieY 于 2022-03-17
  • 1. 概述

    1.1 应用场景

    用户希望在某个字段(如收件人、抄送人)输入多个值后,及时校验输入的人员ID是否存在,如不存在,则弹窗提醒。如下图所示:

    1.2 实现思路

    给填报控件添加编辑结束事件,通过使用 JS 的取数组差集,再判断差集长度的方法实现。

    // 差集 数组arr1相对于arr2所没有的
    let diff = arr1.filter(function (val) { return arr2.indexOf(val) === -1 })

    2. 示例

    2.1 数据准备

    新建模板,新建数据查询数据集 ds1,查出数据库中的雇员信息,其中 ID 列数据将作为填报时允许输入的员工ID比对集。

    SQL 语句为:SELECT * FROM s雇员

    2.2 报表设计

    设计填报表格,A1~C1 单元格添加表头,给 A2~C2 单元格 添加「文本控件」,并设置向下扩展。如下图所示:

    2.3 添加事件

    选中 A2 单元格的「文本控件」,为控件添加一个「编辑结束」事件。如下图所示。

    事件添加一个参数 pm,值为公式:ds1.select(雇员ID),该参数用来获取数据库中雇员ID的信息,构成 ID 数组。

    JavaScript 代码如下:

    注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 效果预览

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

    注:不支持移动端。

    3. 模板下载

    附件列表


    主题: 填报应用
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭