4000-271-266
免费试用

宜搭子表单值重复校验

1. 使用场景

在提交订单、入库等场景,需要在子表单多列选择组合是一样的时候去重,可参考本文档实现方式。

2. 单字段校验

2.1 表单设计

1.创建子表单,在里面添加一个组件

   这里以“单行文本”组件演示

2.2 添加自定义校验规则

function validateRule(value) {
  const tableFieldId = '子表单ID'
  const fieldId = '组件ID'
  const tableValue = this.$(tableFieldId).getValue()
    .filter(item => !item[fieldId] == "")
    .map(item => item[fieldId])
  const valueSet = new Set(tableValue)
  return tableValue.length === valueSet.size
}

2.3 效果展示

3. 多字段组合校验

3.1 表单设计

1.创建子表单,在里面添加自己要使用的列

这里我添加两个下拉单选做演示

3.2 添加自定义校验规则

TIP:每一个参与组合校验的子表单组件都要设置自定义校验函数,同一份代码复制粘贴即可。

1.选中要参与组合校验的列组件,右下角勾选“自定义函数”,点击按钮打开编辑框。

2.在编辑框粘贴下面的代码,并替换代码中的idListtableId为自己表单上的值。

function validateRule(value) {
  const tableId = 'tableField_l9nmw8iy'
  const idList = ['textField_l9nmw8iz', 'numberField_l9nmw8j0']
  const tableValue = this.$(tableId).getValue()
    .filter(row => {
      // 多字段任意一个为空则跳过行
      for (const id of idList) {
        if ('' + row[id] === '') {
          return false
        }
      }
      return true
    })
    .map(row => {
      //当前行要校验的值拼接一个字符串
      let str = ''
      idList.forEach(id => str += row[id])
      return str
    })
  //利用Set去重
  const valueSet = new Set(tableValue)
  // console.log(tableValue)
  // console.log(valueSet)
  //如果长度相等则证明没有重复的
  return tableValue.length === valueSet.size
}

3.3 效果展示


江苏无雀数据科技有限公司 www.wuquedata.com 版权所有
服务热线4000-271-266
ICP备案编号:苏ICP备2022045370号

一对一专业企业顾问

工作时间:9:00-18:00 在线服务

实时解答疑难问题

工作时间:9:00-18:00 在线服务

4000-271-266

工作时间:9:00-18:00 在线服务

售后咨询 电话联系 售前咨询